Назад к вопросам
Junior — Middle
94
Будет ли Promise.all продолжать выполнение, если один из переданных промисов завершится с ошибкой?
Компании, где спрашивали
Бизнес-Азимут
Ответ от нейросети
sobes.tech AI
Нет, Promise.all не продолжит ожидать остальные промисы, если один из них завершится с ошибкой (отклонится). В этом случае Promise.all сразу же отклоняется с той же ошибкой, и дальнейшее выполнение остальных промисов не влияет на результат.
То есть, если хотя бы один промис из массива, переданного в Promise.all, отклонится, итоговый промис тоже будет отклонён с этой ошибкой.
Пример:
const p1 = Promise.resolve(1);
const p2 = Promise.reject(new Error('Ошибка'));
const p3 = new Promise(resolve => setTimeout(() => resolve(3), 1000));
Promise.all([p1, p2, p3])
.then(results => console.log('Результаты:', results))
.catch(error => console.error('Ошибка:', error.message));
// Выведет: Ошибка: Ошибка
Обратите внимание, что p3 может продолжить выполнение, но Promise.all уже отклонился и не ждёт его результата.