Исклучителни ситуации во промисите во 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.
Запазете сето ова во промис. Нека промисот со својот резултат
го враќа резултатот од делење на единицата со генерираниот
број. Нека промисот се изврши со грешка,
ако се случило делење со нула, и со успех
во сите други случаи.