Назад к вопросам
Middle
68
questionbank
Как работает метод Promise.all в JavaScript?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Promise.all принимает итерируемый объект (например, массив) с промисами и возвращает новый промис.
Этот новый промис:
- Переходит в состояние resolved, если все промисы в переданном итерируемом объекте успешно resolved. В этом случае значением является массив результатов всех промисов в том порядке, в котором они были переданы.
- Переходит в состояние rejected, как только один из промисов в переданном в него итерируемом объекте переходит в состояние rejected. В этом случае значением является причина отклонения первого отклонённого промиса.
- Если переданный итерируемый объект пуст, возвращаемый промис немедленноresolved с пустым массивом.
Пример:
const promise1 = Promise.resolve(3);
const promise2 = 42; // Не промис, будет обернут в промис
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3])
.then((values) => {
console.log(values); // Выведет: [3, 42, "foo"]
})
.catch((error) => {
console.error(error);
});
Пример с ошибкой:
const promise4 = Promise.resolve('success');
const promise5 = Promise.reject('error');
Promise.all([promise4, promise5])
.then((values) => {
console.log(values); // Не выполнится
})
.catch((error) => {
console.error(error); // Выведет: error
});