Какие статические методы 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) — создаёт отклонённый промис с указанной причиной

Подробный разбор

Ответ с пояснениями

Статические методы для работы с промисами

  • 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 в распределённых системах.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку