Как вызвать функцию после завершения fetch () - PullRequest
0 голосов
/ 30 августа 2018

Я использую реагирующую натуру и получаю запрос GET, который принимает массив. Теперь мне нужен этот fetch (), чтобы закончить получение этого массива, чтобы я мог вызвать функцию, которая будет обрабатывать этот массив и что-то с ним делать. Как мне дождаться его окончания?
Это мой запрос:

componentWillMount(){
        console.log("will mount");
        fetch('SOME_API', {
            method: "GET",
            headers: {
                Accept: 'text/javascript',
                'Content-Type': 'text/javascript',
            }
        }).then(response => response.json()).then(responseJson => {
            this.setState(function (prevState, props) {
                return {questions: responseJson, loading: false}
            })
        })
        
    }

И когда этот запрос get переводит responseJson в состояние, я хочу вызвать мою функцию, которая будет что-то делать с этим массивом.

Если вам нужна дополнительная информация, пожалуйста, прокомментируйте.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Поместите оператор if в вашу функцию рендеринга:

 render(){

    if(this.state.loading){
        return(
            <View style={{flex: 1, padding: 20}}>
                // Your code if fetch() still fetching
            </View>
        )
     }

    return(
        <View style={{flex: 1, paddingTop:20}}>
            // Your code if fetch() has ended
            // the complete fetched data is this.state.questions
        </View>
    );
} 
0 голосов
/ 30 августа 2018

Просто определите функцию внутри класса и вызовите функцию, используя это. {Имя_функции}, как показано ниже.

myFunction(responseJson) {
  // ... Your code ...
}
componentWillMount() {
  console.log("will mount");
  fetch(baseUrl + 'api/Customer/GetCustomerAccount/' + value, {
    method: 'GET',
  })
  .then((response) => response.json())
  .then((responseJson) => {
    this.myFunction(responseJson);
  })
}
...