Обещание - это объект, возвращаемый асинхронным методом.
Обещание - это прокси для значения, не обязательно известного на момент создания обещания. Он позволяет связать обработчики с конечным значением успеха или причиной сбоя асинхронного действия. Это позволяет асинхронным методам возвращать значения, как синхронные методы: вместо того, чтобы немедленно возвращать окончательное значение, асинхронный метод возвращает обещание предоставить значение в какой-то момент в будущем.
Зачем мне использовать обещания?
Обещания помогут вам упростить обработку, понимание и поддержку всего сложного асинхронного кода.
Обещания не связаны с агрегацией обратных вызовов. Это простая утилита. Обещания касаются чего-то гораздо более глубокого, а именно обеспечения прямого соответствия между синхронными функциями и асинхронными функциями.
Ниже приведены состояния обещания.
- ожидает: начальное состояние, ни выполнено, ни отклонено.
- выполнено: означает, что операция была успешно завершена.
- отклонено: это означает, что операция не удалась.
Прикованные обещания
Методы 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);