Выбор ответа Junior Асинхронные паттерны спрашивают часто обновлено

Promise.all или Promise.allSettled

Вопрос

Нужно отправить уведомления 50 пользователям и потом показать отчёт: кому ушло, кому нет. Какой метод подходит?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Promise.allSettled. allSettled ждёт завершения всех промисов и никогда не отклоняется: для каждого вернёт { status: "fulfilled", value } или { status: "rejected", reason }.

Варианты ответа

  1. Promise.all
  2. Promise.race
  3. Promise.any
  4. Promise.allSettledправильный ответ

Разбор

allSettled ждёт завершения всех промисов и никогда не отклоняется: для каждого вернёт { status: "fulfilled", value } или { status: "rejected", reason }. Ровно то, что нужно для отчёта.

  • all отклонится на первой ошибке, и результаты остальных потеряются.
  • race вернёт только первый завершившийся.
  • any вернёт первый успешный.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме