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
- 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 — для ожидания первого успешного ответа от нескольких источников.