Išimtinės situacijos "Promise" objektuose JavaScript
Dabar išmokime apdoroti išimtines situacijas, atsiradusias "Promise" objekte. Tokios situacijos atveju mes turime atminti "promise" naudojant specialią atmetimo funkciją, kuri automatiškai patenka į antrą "promise" funkcijos parametrą:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
"Promise" funkcijos viduje mes turime išsiųsti
resolve, jei viskas praėjo normaliai, arba
reject, jei kilo išimtinė
situacija:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // "promise" duomenys
} else {
reject('klaida "promise"'); // jūsų klaidos pranešimas
}
}, 3000);
});
Tada then metode parametrais turite
perduoti ne vieną, o dvi funkcijas: pirmoji veiks,
jei "promise" įvykdytas sėkmingai (resolved),
o antroji - jei įvykdyta su klaida (rejected):
promise.then(
function(result) {
console.log(result); // atvaizduos "promise" rezultatą
},
function(error) {
console.log(error); // atvaizduos klaidos pranešimą
}
);
Paprastai, aukščiau pateiktas kodas rašomas kompaktiškiau, štai taip:
promise.then(function(result) {
console.log(result); // atvaizduos "promise" rezultatą
}, function(error) {
console.log(error); // atvaizduos klaidos pranešimą
});
Sukurkite asinchroninį kodą, kuris generuos
atsitiktinius skaičius nuo 0 iki 5.
Apgaubkite visą tai "promise" objekte. Tegul "promise" savo rezultatu
grąžina vieneto dalybos iš sugeneruoto skaičiaus rezultatą.
Tegul "promise" įvykdomas su klaida,
jei įvyko dalyba iš nulio, ir sėkmingai
visais kitais atvejais.