Вы можете вернуть Promise.all
для обоих .json
вызовов внутри .then
:
Promise.all([fetch1, fetch2])
.then((file) => {
let test1 = file[0].json()
let test2 = file[1].json()
return Promise.all([test1, test2])
}).then(([test1, test2]) => {
console.log(test1)
console.log(test2)
})
Но, вероятно, было бы лучше принять оба fetch
запроса и .map
их их .json()
Promises, затем вызов Promise.all
по результату:
const getApi = url => fetch(url).then(res => res.json());
Promise.all([
getApi('url1'),
getApi('url2')
])
.then(([test1, test2]) => {
// do stuff with test1 and test2
})
.catch((err) => {
// handle errors
});
Приведенный выше код приведет к параллельной обработке запросов; ни один запрос не помешает другому запросу продолжить. Напротив, ваш (настроенный) исходный код потребует, чтобы заголовки ответа от обоих запросов были получены и обработаны до того, как .json()
(для обработки тела) для любого из них может начаться.