Вкатываемся в NodeJS Help

Promise

Асинхронные функции возвращают объект Promise в качестве значения. Внутри промиса хранится результат вычисления, которое может быть уже выполнено или выполнится в будущем.

Промис может находиться в одном из трёх состояний:

  • pending — стартовое состояние, операция стартовала;

  • fulfilled — получен результат;

  • rejected — ошибка.

const promise = new Promise(function (resolve, reject) { const data = getData() // делаем асинхронную операцию: запрос в БД, API, etc. resolve(data) // переводим промис в состояние fulfilled. Результатом выполнения будет объект data }) const errorPromise = new Promise(function (resolve, reject) { reject(new Error('ошибка')) // переводим промис в состояние rejected. Результатом выполнения будет объект Error })
  • первый параметр (в примере кода назван resolve) — колбэк для перевода промиса в состояние fulfilled, при его вызове аргументом передаётся результат операции;

  • второй параметр (в примере кода назван reject) — колбэк для перевода промиса в состояние rejected, при его вызове аргументом передаётся информация об ошибке.

Методы

Существует три метода, которые позволяют работать с результатом выполнения вычисления внутри промиса:

  • then() - используют, чтобы выполнить код после успешного выполнения асинхронной операции.

  • catch() - используют, чтобы выполнить код в случае ошибки при выполнении асинхронной операции.

  • finally() - используют, чтобы выполнить код при завершении асинхронной операции. Он будет выполнен вне зависимости от того, была ли операция успешной или завершилась ошибкой.

Подробнее: Promise

Promise API

В классе Promise есть 6 статических методов:

Promise.all(promises) – ожидает выполнения всех промисов и возвращает массив с результатами. Если любой из указанных промисов вернёт ошибку, то результатом работы Promise.all будет эта ошибка, результаты остальных промисов будут игнорироваться.

Promise.allSettled(promises) (добавлен недавно) – ждёт, пока все промисы завершатся и возвращает их результаты в виде массива с объектами, у каждого объекта два свойства: status:

  • "fulfilled", если выполнен успешно или"rejected", если ошибка,

  • value – результат, если успешно илиreason – ошибка, если нет.

Promise.race(promises) – ожидает первый выполненный промис, который становится его результатом, остальные игнорируются.

Promise.any(promises) (добавлен недавно) – ожидает первый успешно выполненный промис, который становится его результатом, остальные игнорируются. Если все переданные промисы отклонены, AggregateErrorстановится ошибкой Promise.any.

Promise.resolve(value) – возвращает успешно выполнившийся промис с результатомvalue.

Promise.reject(error) – возвращает промис с ошибкойerror.

Подробнее: Promise API

Last modified: 10 July 2025