𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗣𝗿𝗼𝗺𝗶𝘀𝗲𝘀

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: завершает выполнение всех задач.

Источник: https://dev.to/malik786/javascript-promises-2hn4