𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗣𝗿𝗼𝗺𝗶𝘀𝗲𝘀
Promise представляет собой результат асинхронной задачи.
Вы используете Promise для вызовов API, запросов к базе данных и чтения файлов.
Promise имеет три состояния:
- Pending: задача всё еще выполняется.
- Fulfilled: задача успешно завершена.
- Rejected: задача завершилась с ошибкой.
Структура выглядит так:
const promise = new Promise((resolve, reject) => { // Исполнитель (executor) запускается немедленно });
Вы обрабатываете результаты с помощью этих методов:
- .then(): выполняется, когда promise успешно завершается.
- .catch(): выполняется, когда promise завершается ошибкой.
- .finally(): выполняется, когда задача завершается независимо от результата.
Важные правила, которые стоит запомнить:
- Побеждает первый результат. Если вы вызовете resolve(), а затем reject(), победит resolve.
- Функция-исполнитель (executor) выполняется синхронно.
- Использование async и await делает ваш код более читаемым, чем использование .then().
Обработка нескольких promise:
- Promise.all(): использует подход fail-fast. Если один promise завершается ошибкой, вся группа считается проваленной.
- Promise.allSettled(): ожидает завершения каждого promise. Он возвращает результаты, даже если некоторые задачи завершились ошибкой.
Резюме:
- Promise: обработчик асинхронных результатов.
- resolve: помечает успех.
- reject: помечает ошибку.
- async/await: более чистый способ работы с promise.
- Promise.all: останавливается при первой ошибке.
- Promise.allSettled: завершает выполнение всех задач.
