Изключителни ситуации в промиси в JavaScript
Нека сега се научим да обработваме изключителни ситуации, възникнали вътре в промис. В случай на възникване на такава ситуация трябва да отхвърлим промиса с помощта на специална функция за отхвърляне, която автоматично попада във втория параметър на функцията на промиса:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Вътре във функцията на промиса трябва да извикаме
resolve, ако всичко мина нормално, или
reject, ако възникне изключителна
ситуация:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // данни на промиса
} else {
reject('error in promise'); // вашия текст за грешка
}
}, 3000);
});
След това в метода then трябва да подадете
като параметри не една, а две функции: първата ще се задейства,
ако промисът се изпълни нормално (резолвнал се),
а втората - ако се изпълни с грешка (реджектнал се):
promise.then(
function(result) {
console.log(result); // ще изведе резултата от промиса
},
function(error) {
console.log(error); // ще изведе текста на грешката
}
);
Като правило, горният код се записва по-компактно, ето така:
promise.then(function(result) {
console.log(result); // ще изведе резултата от промиса
}, function(error) {
console.log(error); // ще изведе текста на грешката
});
Направете асинхронен код, който ще генерира
случайни числа от 0 до 5.
Обърнете всичко това в промис. Нека промисът със своя резултат
връща резултата от деленето на единица на генерираното
число. Нека промисът се изпълни с грешка,
ако е станало деление на нула, и успешно
във всички останали случаи.