Какие методы есть у Promise и для чего они нужны?

Promise — объект JavaScript, описывающий результат асинхронной операции. Основные методы экземпляра: then(onFulfilled, onRejected) — назначает обработчики успешного или ошибочного завершения и возвращает новый…

Короткий ответ

Что ответить на собеседовании

Promise — объект JavaScript, описывающий результат асинхронной операции. Основные методы экземпляра: then(onFulfilled, onRejected) — назначает обработчики успешного или ошибочного завершения и возвращает новый Promise. catch(onRejected) — краткая форма записи then(undefined, onRejected), предназначенная для обработки ошибок. finally(onFinally) — выполняет указанный код после завершения операции, не изменяя её результат. Статические методы: Promise.resolve(value) — создаёт выполненный Promise с переданным значением value. Promise.reject(reason) — создаёт отклонённый Promise с указанной причиной reason. Promise.all(iterable) — ожидает…

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

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

Методы Promise

  • Promise — объект JavaScript, описывающий результат асинхронной операции.
  • Основные методы экземпляра:
  • then(onFulfilled, onRejected) — назначает обработчики успешного или ошибочного завершения и возвращает новый Promise.
  • catch(onRejected) — краткая форма записи then(undefined, onRejected), предназначенная для обработки ошибок.
  • finally(onFinally) — выполняет указанный код после завершения операции, не изменяя её результат.
  • Статические методы:
  • Promise.resolve(value) — создаёт выполненный Promise с переданным значением value.
  • Promise.reject(reason) — создаёт отклонённый Promise с указанной причиной reason.
  • Promise.all(iterable) — ожидает завершения всех операций и отклоняется сразу после первой ошибки.
  • Promise.race(iterable) — завершается с результатом первой завершившейся операции из iterable: успешным или ошибочным.
  • Promise.allSettled(iterable) — дожидается окончания всех операций и возвращает результаты вместе с их статусами.
  • Promise.any(iterable) — возвращает первый успешно завершившийся Promise и отклоняется, если все операции завершились с ошибкой.
  • Эти методы позволяют выстраивать цепочки асинхронных операций и управлять обработкой ошибок.
  • По сравнению с коллбэками они делают код проще для чтения и сопровождения.

Вместе методы Promise образуют основу асинхронного программирования, позволяя гибко управлять задачами и получать их результаты.

Подробный ответ

Основной ответ

Promise в JavaScript — объект, который представляет результат асинхронной операции. Его методы предназначены для управления такими операциями и их объединения. Условно они делятся на инстанс-методы и статические методы.

Ключевые методы

Инстанс-методы:

  • then(onFulfilled, onRejected) — обрабатывает fulfilled-результат или состояние rejected. Метод возвращает новый Promise, поэтому вызовы можно объединять в цепочки.
  • catch(onRejected) — сокращённый вариант обработки ошибок, эквивалентный then(null, onRejected).
  • finally(onFinally) — выполняется после завершения Promise независимо от того, завершился он успешно или с ошибкой. На итоговый результат не влияет и часто используется для очистки ресурсов.

Статические методы:

  • Promise.resolve(value) — возвращает Promise, успешно завершённый с переданным значением.
  • Promise.reject(reason) — возвращает Promise, отклонённый с указанной причиной.
  • Promise.all(iterable) — ждёт успешного завершения всех промисов в наборе, но сразу отклоняется, если любой из них завершился ошибкой.
  • Promise.allSettled(iterable) (ES2020+) — ожидает завершения всех промисов и возвращает их статусы, не отклоняясь из-за отдельных ошибок.
  • Promise.race(iterable) — возвращает результат первого завершившегося промиса, независимо от того, был он resolved или rejected.
  • Promise.any(iterable) (ES2021+) — возвращает первый успешно завершившийся промис и отклоняется только в случае отклонения всех промисов.

Ключевые моменты

  • Связка методов then/catch/finally формирует цепочки, с помощью которых можно строить сложные сценарии асинхронных операций и обрабатывать ошибки.
  • Статические методы предназначены для параллельной работы с несколькими промисами. Конкретный метод выбирают по задаче: дождаться всех результатов, получить первый результат или найти первый успешный.
  • В ES2020 и ES2021 появились методы allSettled и any, заметно расширившие возможности работы с группами промисов.

Практический контекст

В прикладных проектах методы Promise лежат в основе асинхронного кода: загрузки данных, сетевых запросов и операций с файлами. Например, Promise.all применяют для параллельного получения данных из нескольких API, finally — чтобы скрыть индикатор загрузки, а Promise.any — для ожидания первого успешного ответа от нескольких источников.

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

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

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

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