Статические методы для работы с промисами Promise — встроенный конструктор JavaScript Promise.all(iterable) — ожидает завершения всех промисов и отклоняется при первой ошибке Promise.race(iterable) — возвращает первый завершившийся промис, независимо от результата Promise.allSettled(iterable) — дожидается всех промисов и возвращает их статусы и значения Promise.any(iterable) — возвращает первый успешно завершившийся промис и отклоняется, если завершились ошибкой все Promise.resolve(value) — создаёт из значения выполненный промис Promise.reject(reason) — создаёт отклонённый промис с указанной причиной
Какие статические методы Promise нужно знать на собеседовании?
Статические методы для работы с промисами Promise — встроенный конструктор JavaScript Promise.all(iterable) — ожидает завершения всех промисов и отклоняется при первой ошибке Promise.race(iterable) — возвращает первый…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Статические методы для работы с промисами
- Promise — встроенный конструктор JavaScript
- Promise.all(iterable) — ожидает завершения всех промисов и отклоняется при первой ошибке
- Promise.race(iterable) — возвращает первый завершившийся промис, независимо от результата
- Promise.allSettled(iterable) — дожидается всех промисов и возвращает их статусы и значения
- Promise.any(iterable) — возвращает первый успешно завершившийся промис и отклоняется, если завершились ошибкой все
- Promise.resolve(value) — создаёт из значения выполненный промис
- Promise.reject(reason) — создаёт отклонённый промис с указанной причиной
Эти методы делают удобнее параллельную и агрегационную обработку асинхронного кода и помогают управлять состояниями нескольких промисов.
Подробный ответ
Основной ответ
В JavaScript у Promise есть набор важных статических методов. Они позволяют запускать и контролировать несколько промисов, создавать промисы с уже известным результатом или ошибкой, а также объединять результаты асинхронных операций. К основным методам относятся Promise.resolve(), Promise.reject(), Promise.all(), Promise.allSettled(), Promise.race() и Promise.any().
Ключевые моменты
Promise.resolve(value)возвращает успешно выполненный промис с переданным значением. Если аргумент уже является промисом, метод возвращает его без изменений. Это позволяет гарантировать, что результатом будет промис.Promise.reject(reason)немедленно создаёт промис в состоянии rejected с указанной причиной. Метод удобно использовать для формирования ошибок внутри цепочек промисов.Promise.all(iterable)дожидается выполнения всех промисов из массива или другого итерируемого объекта. Результаты возвращаются массивом в исходном порядке, однако при отклонении хотя бы одного промиса общий промис отклоняется сразу. Метод подходит для параллельного выполнения взаимосвязанных задач.Promise.allSettled(iterable)ожидает завершения каждого промиса, независимо от того, был ли он fulfilled или rejected. Для каждого результата метод возвращает объект с состоянием и значением либо ошибкой. В React 18+ его часто применяют для безопасного сбора результатов без прерывания из-за ошибки.Promise.race(iterable)выдаёт первый завершившийся промис — выполненный или отклонённый — из переданного набора. Такой подход полезен при реализации таймаутов и выборе самого быстрого результата.Promise.any(iterable)игнорирует отклонённые промисы и возвращает первый успешно выполненный. Отклонение происходит только в случае, если ошибочными оказались все промисы; метод добавлен в ES2021. Он подходит для сценариев, где достаточно получить результат хотя бы от одного источника.
Практический контекст
На практике Promise.all используют для параллельных API-запросов, когда необходимо успешно получить все данные. Promise.race подходит для организации таймаутов сетевых операций. Promise.allSettled удобен при обработке набора независимых задач: он позволяет узнать статус каждой, не останавливая выполнение на первой ошибке. С помощью Promise.any можно быстрее получить успешный ответ от нескольких источников, например реализовать call failover в распределённых системах.