Какие статические методы 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