Комбинаторы промисов
Вопрос
Чем отличаются Promise.all, allSettled, race и any?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
all отклоняется на первой ошибке и теряет остальные результаты
allSettled всегда выполняется, отдаёт массив со status
race завершается первым любым исходом, включая ошибку
any ждёт первый успех, отклоняется только если все упали
all сохраняет порядок входного массива, а не порядок завершения
остальные запросы при отклонении all не отменяются, а продолжают идти
Что могут спросить следом
- Как сделать таймаут для fetch через race
- Что взять для загрузки виджетов дашборда и почему
- Как ограничить число параллельных запросов до трёх
Разбор
Promise.all отклоняется, как только упал любой - остальные результаты теряются,
хотя запросы продолжают выполняться. allSettled дожидается всех и отдаёт массив
{status, value|reason} - то, что нужно, когда частичный отказ допустим.
race завершается первым исходом любого рода, включая ошибку - им делают таймауты.
any ждёт первый успех и отклоняется AggregateError, только если упали все.
Во всех случаях результат all сохраняет порядок входного массива, а не порядок
завершения.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.