Sobes.tech
Back to questions
Junior — Middle
95

Будет ли Promise.all продолжать выполнение, если один из переданных промисов завершится с ошибкой?

Companies where asked
Бизнес-Азимут

Answer from AI

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 уже отклонился и не ждёт его результата.