Ответ вслух Junior Промисы и async/await спрашивают часто обновлено

Комбинаторы промисов

Вопрос

Чем отличаются Promise.all, allSettled, race и any?

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Promise.all отклоняется, как только упал любой - остальные результаты теряются, хотя запросы продолжают выполняться. allSettled дожидается всех и отдаёт массив {status, valuereason} - то, что нужно, когда частичный отказ допустим. race завершается первым исходом любого рода, включая ошибку - им делают таймауты. any…

Что должно прозвучать в ответе

  • all отклоняется на первой ошибке и теряет остальные результаты

  • allSettled всегда выполняется, отдаёт массив со status

  • race завершается первым любым исходом, включая ошибку

  • any ждёт первый успех, отклоняется только если все упали

  • all сохраняет порядок входного массива, а не порядок завершения

  • остальные запросы при отклонении all не отменяются, а продолжают идти

Что могут спросить следом

  • Как сделать таймаут для fetch через race
  • Что взять для загрузки виджетов дашборда и почему
  • Как ограничить число параллельных запросов до трёх

Разбор

Promise.all отклоняется, как только упал любой - остальные результаты теряются, хотя запросы продолжают выполняться. allSettled дожидается всех и отдаёт массив {status, value|reason} - то, что нужно, когда частичный отказ допустим.

race завершается первым исходом любого рода, включая ошибку - им делают таймауты. any ждёт первый успех и отклоняется AggregateError, только если упали все.

Во всех случаях результат all сохраняет порядок входного массива, а не порядок завершения.

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

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

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