Izuzetne situacije u promisima u JavaScript-u
Hajde sada da naučimo kako da rukujemo izuzetnim situacjama koje su se desile unutar promisa. U slučaju nastanka takve situacije, moramo da odbijemo promis pomoću specijalne funkcije za odbijanje, koja automatski dolazi kao drugi parametar funkcije promisa:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Unutar funkcije promisa moramo da pozovemo
resolve, ako je sve prošlo normalno, ili
reject, ako je nastupila izuzetna
situacija:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // podaci promisa
} else {
reject('error in promise'); // vaš tekst greške
}
}, 3000);
});
Zatim u metodu then parametrima treba da
prosledite ne jednu, već dve funkcije: prva će se izvršiti,
ako je promis uspešno završen (rezolvirao se),
a druga - ako se završio sa greškom (rejectovao se):
promise.then(
function(result) {
console.log(result); // ispisaće rezultat promisa
},
function(error) {
console.log(error); // ispisaće tekst greške
}
);
U pravilu, gore navedeni kod se zapisuje kompaktnije, ovako:
promise.then(function(result) {
console.log(result); // ispisaće rezultat promisa
}, function(error) {
console.log(error); // ispisaće tekst greške
});
Napravite asinhroni kod koji će generisati
slučajne brojeve od 0 do 5.
Obavite sve ovo u promisu. Neka promis svojim rezultatom
vrati rezultat deljenja jedinice sa generisanim
brojem. Neka se promis izvrši sa greškom,
ako se desilo deljenje sa nulom, i uspešno
u svim ostalim slučajevima.