Назад к вопросам
Junior
70
questionbank
Для чего нужен Promise.all?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Promise.all принимает итерируемый объект промисов (например, массив) и возвращает новый промис. Этот новый промис выполняется, когда все переданные промисы успешно выполняются. Результатом выполнения будет массив значений, соответствующих результатам каждого из переданных промисов, в том же порядке.
Если хотя бы один из переданных ему промисов отклоняется, то Promise.all немедленно отклоняется с причиной отклонения первого отклонившегося промиса.
Применение:
- Одновременное выполнение нескольких асинхронных операций, которые не зависят друг от друга.
- Ожидание завершения набора операций перед переходом к следующему шагу.
Пример:
async function fetchData() {
const urls = [
'https://api.example.com/data1',
'https://api.example.com/data2',
'https://api.example.com/data3',
];
try {
// Одновременно загружаем данные с нескольких URL
const responses = await Promise.all(urls.map(url => fetch(url)));
// Проверяем успешность каждого ответа
for (const response of responses) {
if (!response.ok) {
// Если один из ответов не успешный, выбрасываем ошибку
throw new Error(`HTTP error! status: ${response.status}`);
}
}
// Парсим все ответы в JSON
const jsonData = await Promise.all(responses.map(response => response.json()));
// Теперь jsonData - это массив результатов всех запросов
console.log(jsonData);
} catch (error) {
// Обрабатываем ошибку если один из промисов отклонился (Fetch или JSON.parse)
console.error('Error fetching data:', error);
}
}
fetchData();