PassFront
  1. PassFront
  2. База знаний
  3. Асинхронность и Event Loop

Что такое Promise.allSettled в JavaScript?

Асинхронность и Event Loop

`Promise.allSettled` принимает массив промисов и ждёт завершения всех, никогда не падая: результат — массив с описанием итога каждого промиса.

Формат результата

Для каждого промиса возвращается объект:

  • { status: 'fulfilled', value } — при успехе.
  • { status: 'rejected', reason } — при ошибке.
const results = await Promise.allSettled([
  Promise.resolve(1),
  Promise.reject('ошибка'),
  Promise.resolve(3),
]);
// [
//   { status: 'fulfilled', value: 1 },
//   { status: 'rejected', reason: 'ошибка' },
//   { status: 'fulfilled', value: 3 },
// ]

Отличие от Promise.all

  • all — падает при первой же ошибке (fail-fast), результата остальных не даёт.
  • allSettled — дожидается всех и возвращает статусы, ничего не теряя.

Когда использовать

  • Нужно выполнить много независимых операций и узнать итог каждой, даже если часть упала.
  • Пример: отправка нескольких запросов, где важно показать, какие прошли, а какие нет.
const ok = results.filter((r) => r.status === 'fulfilled');
const failed = results.filter((r) => r.status === 'rejected');

Коротко для собеседования

Promise.allSettled ждёт все промисы и возвращает массив статусов (fulfilled/rejected) — не падает при ошибках. Используют, когда важен результат каждой операции независимо от остальных.

Другие вопросы раздела