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

Какие статические методы Promise важны на практике и чем они отличаются?

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

Статические методы `Promise` комбинируют несколько промисов. Главные — all, allSettled, race, any; плюс resolve и reject для создания уже готовых промисов.

Promise.all

Ждёт все промисы. Если хоть один упал — сразу reject с этой ошибкой.

const [a, b] = await Promise.all([fetchA(), fetchB()]);

Применение: параллельные независимые запросы, где нужны все результаты.

Promise.allSettled

Ждёт все и никогда не падает: возвращает массив { status, value | reason }.

const results = await Promise.allSettled([fetchA(), fetchB()]);
// [{status:'fulfilled', value}, {status:'rejected', reason}]

Применение: когда важен результат каждого, даже если часть упала.

Promise.race

Возвращает результат первого завершившегося (успех или ошибка).

Применение: таймауты (race запроса и setTimeout-reject).

Promise.any

Возвращает первый успешный; если все упали — AggregateError.

Применение: несколько источников, достаточно любого успешного.

Таблица выбора

  • Нужны все, важен fail-fast → all.
  • Нужны все, но без падения → allSettled.
  • Нужен первый любой → race.
  • Нужен первый успешный → any.

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

all — все или fail-fast, allSettled — все со статусами, race — первый завершённый, any — первый успешный. Выбор зависит от того, нужны ли все результаты и как реагировать на ошибки.

Подробнее: learn.javascript.ru — Promise API

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