Izjemne situacije v promisih v JavaScript
Zdaj se naučimo obvladovati izjemne situacije, ki se zgodijo znotraj promisa. V primeru pojavitve takšne situacije moramo zavrniti promis s pomočjo posebne funkcije za zavrnitev, ki samodejno pride v drugi parameter funkcije promisa:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Znotraj funkcije promisa moramo poklicati
resolve, če je vse potekalo normalno, ali
reject, če je prišlo do izjemne
situacije:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // podatki promisa
} else {
reject('napaka v promisu'); // vaše besedilo napake
}
}, 3000);
});
Nato morate v metodi then kot parametre
predati ne eno, ampak dve funkciji: prva bo delovala,
če je promis deloval normalno (se je razrešil),
druga pa - če je deloval z napako (se je zavrnil):
promise.then(
function(result) {
console.log(result); // izpiše rezultat promisa
},
function(error) {
console.log(error); // izpiše besedilo napake
}
);
Praviloma zgornjo kodo zapišejo bolj strnjeno, takole:
promise.then(function(result) {
console.log(result); // izpiše rezultat promisa
}, function(error) {
console.log(error); // izpiše besedilo napake
});
Naredite asinhrono kodo, ki bo generirala
naključna števila od 0 do 5.
Vse to zavijte v promis. Naj promis kot rezultat
vrne rezultat deljenja enice z generiranim
številom. Naj se promis izvede z napako,
če je prišlo do deljenja z nič, in z uspehom
v vseh drugih primerih.