Использование Promise.all () для нескольких вызовов fetch () не работает - PullRequest
0 голосов
/ 09 апреля 2020

Мне нужно вызвать несколько API и сопоставить их данные ответов с соответствующими источниками данных. Я могу сделать это, используя отдельные fetch() вызовы API. Однако я хочу использовать Promise.all() для загрузки данных из всех API-интерфейсов перед их отображением в приложении. Однако я не могу успешно сделать это. Ниже приведен фрагмент кода:

componentDidMount() {
        this.fetchAPIs(); //function to call APIs
        this.loadFontAsync(); //function to load custom font
    }

    fetchAPIs = async () => {
        console.log('Fetching APIs')

        await Promise.all([
            fetch('http://192.168.0.111:8080/endpoint1', {
                method: 'post',
                mode: 'cors',
                headers: {
                    'Accept': 'application/json',
                    'Content-type': 'application/json'
                },
                body: JSON.stringify({
                    "customerNo": this.state.custId,
                })
            }),
            fetch('http://192.168.0.111:8080/endpoint2', {
                method: 'post',
                mode: 'cors',
                headers: {
                    'Accept': 'application/json',
                    'Content-type': 'application/json'
                },
                body: JSON.stringify({
                    "customerNo": this.state.custId,
                })
            }),
            fetch('http://192.168.0.111:8080/endpoint3', {
                method: 'get',
                mode: 'cors',
                headers: {
                    'Accept': 'application/json',
                    'Content-type': 'application/json'
                }
            }),
            fetch('http://192.168.0.111:8080/endpoint4', {
                method: 'post',
                mode: 'cors',
                headers: {
                    'Accept': 'application/json',
                    'Content-type': 'application/json'
                }
                ,
                body: JSON.stringify({
                    "customerNo": this.state.custId,
                })
            })
        ])
            .then((response) => Promise.all(response.map(res => res.json())))
            .then((response) => {
                this.setState({
                    //mapping response to dataSources chronologically
                    dataSource3: response[0],
                    dataSource1: response[1],
                    dataSource2: response[2],
                    dataSource4: response[3],
                    isLoading: false    // to check if APIs are loaded
                })
            })
            .catch((error) => {
                Alert.alert("Promise not fulfilled");
                console.error(error);
            });
    }

Когда я проверяю журналы на сервере, где размещен API-интерфейс, при выполнении этого кода не происходит попадания ни в одну из конечных точек. Кто-нибудь может подсказать, что мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...