Вы можете использовать Promise.all()
для ожидания выполнения всех fetch
запросов. Promise.all
принимает массив обещаний и возвращает одно обещание, которое разрешается, когда разрешаются все переданные обещания. Если одно из пропущенных обещаний отклоняется, Promise.all
также отклоняет.
fetch(URL)
.then(res => res.json())
.then(data => {
let companies = data;
let promises = [];
for (let i = 0; i <= companies.length; i++) {
let promise = fetch(`URL${companies[i].id}`)
.then(res => res.json());
promises.push(promise);
}
Promise
.all(promises)
.then(dataArrays => {
// dataArrays[0] is the result from company 0
// dataArrays[1] is the result from company 1 and so on
})
.catch(error => console.log(error));
// console.log(companies[i].name);
}
})
.catch(error => console.log(error));
Однако, если возможно, объединение всех запросов companies
в один и объединение их данных на бэкэнде будет оптимальным решение, так как оно будет более эффективным.