Situații excepționale în promisiunile din JavaScript
Să învățăm acum să gestionăm situațiile excepționale care apar în interiorul unei promisiuni. În cazul apariției unei astfel de situații, trebuie să respingem promisiunea folosind o funcție specială de respingere, care este transmisă automat ca al doilea parametru al funcției executor a promisiunii:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
În interiorul funcției executor a promisiunii, trebuie să apelăm
resolve, dacă totul a decurs normal, sau
reject, dacă a apărut o situație excepțională:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // datele promisiunii
} else {
reject('error in promise'); // textul erorii dvs.
}
}, 3000);
});
Apoi, în metoda then, trebuie să transmiteți
ca parametri nu una, ci două funcții: prima va fi executată
dacă promisiunea s-a finalizat cu succes (s-a rezolvat),
iar a doua - dacă s-a finalizat cu o eroare (s-a respins):
promise.then(
function(result) {
console.log(result); // va afișa rezultatul promisiunii
},
function(error) {
console.log(error); // va afișa textul erorii
}
);
De regulă, codul de mai sus este scris mai compact, astfel:
promise.then(function(result) {
console.log(result); // va afișa rezultatul promisiunii
}, function(error) {
console.log(error); // va afișa textul erorii
});
Creați un cod asincron care va genera
numere aleatorii de la 0 la 5.
Încorporați toate acestea într-o promisiune. Fie ca promisiunea să returneze ca rezultat
rezultatul împărțirii unu la numărul generat.
Fie ca promisiunea să se finalizeze cu o eroare,
dacă a avut loc împărțire la zero, și cu succes
în toate celelalte cazuri.