Объект Promise представляет возможное завершение (или сбой) асинхронной операции и ее результирующее значение.
Обещания — это не просто цепочка миллионов .then(), создающих цепочку кошмаров. Речь идет о функциональной композиции при работе с асинхронным кодом. позволяя нашим сценариям запускать несколько функций независимо друг от друга.
Справляйтесь с этими отказами!
const willIGetNewPhone = new Promise(
(resolve, reject) => { // fat arrow
if (isMomHappy) {
const phone = {
brand: 'Samsung',
color: 'black'
};
resolve(phone);
} else {
const reason = new Error('mom is not happy');
reject(reason);
}
}
);
(Эта функция имеет критерии отклонения, учитывающие вероятность того, что что-то не получится.)
Если в какой-то момент этот процесс дает сбой, одна функция в цепочке композиции может сгенерировать исключение, которое затем обходит все последующие композиционные слои, пока не попадет в руки того, кто может обработать ее с помощью catch .
.catch(error => console.log(error.message));
Итак, эта строка в вашей цепочке обещаний для обработки отклонения обещания. Это дает вам возможность затем обработать эту ошибку так, как вы хотите, вместо того, чтобы останавливать вашу функцию в ее обрабатывающих дорожках.
const askMom = () => {
willIGetNewPhone
.then(showOff)
.then(fulfilled => console.log(fulfilled)) // fat arrow
.catch(error => console.log(error.message)); // fat arrow
};
Вариант использования
При отправке сообщения в API это обычно хорошо с ответами. В этот конкретный день он перегружен огромным количеством звонков. Ты не мудрее. Ваши Обещания возвращаются отклоненными, но у вас нет плана на случай непредвиденных обстоятельств (a .catch()). Ваше приложение разваливается, так как нечего отображать.
Используйте отказы в своих интересах и создавайте более жесткий код Asnc.