Что будет если в Promise.all один Promise выдаст ошибку

«Что будет если в Promise.all один Promise выдаст ошибку» — вопрос из категории Асинхронность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Пример:

const p1 = Promise.resolve('Успех');
const p2 = Promise.reject('Ошибка');
const p3 = new Promise((resolve) => setTimeout(resolve, 100, 'Поздний успех'));

Promise.all([p1, p2, p3])
  .then(console.log) // Не выполнится
  .catch(console.error); // Выведет 'Ошибка'

Альтернатива: Promise.allSettled — дожидается всех промисов, возвращая массив с их статусами.