Обещание - это объект, возвращаемый асинхронным методом.

Обещание - это прокси для значения, не обязательно известного на момент создания обещания. Он позволяет связать обработчики с конечным значением успеха или причиной сбоя асинхронного действия. Это позволяет асинхронным методам возвращать значения, как синхронные методы: вместо того, чтобы немедленно возвращать окончательное значение, асинхронный метод возвращает обещание предоставить значение в какой-то момент в будущем.

Зачем мне использовать обещания?

Обещания помогут вам упростить обработку, понимание и поддержку всего сложного асинхронного кода.

Обещания не связаны с агрегацией обратных вызовов. Это простая утилита. Обещания касаются чего-то гораздо более глубокого, а именно обеспечения прямого соответствия между синхронными функциями и асинхронными функциями.

Ниже приведены состояния обещания.

  • ожидает: начальное состояние, ни выполнено, ни отклонено.
  • выполнено: означает, что операция была успешно завершена.
  • отклонено: это означает, что операция не удалась.

Прикованные обещания

Методы promise.then(), promise.catch() и promise.finally() используются для связывания дальнейших действий с обещанием, которое будет выполнено.

Метод .then() принимает до двух аргументов; первый аргумент - это функция обратного вызова для разрешенного случая обещания, а второй аргумент - функция обратного вызова для отклоненного случая. Каждый .then() возвращает новый сгенерированный объект обещания, который можно дополнительно использовать для связывания; Например:

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('foo');
  }, 300);
});

myPromise
  .then(handleResolvedA, handleRejectedA)
  .then(handleResolvedB, handleRejectedB)
  .then(handleResolvedC, handleRejectedC);