Что такое 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) — не падает при ошибках. Используют, когда важен результат каждой операции независимо от остальных.