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

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

Короткий ответ

Что ответить на собеседовании

Нет, Promise.all не продолжит ожидать остальные промисы, если один из них завершится с ошибкой (отклонится). В этом случае Promise.all сразу же отклоняется с той же ошибкой, и дальнейшее выполнение остальных промисов не влияет на результат.

Подробный разбор

Ответ с пояснениями

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее