Situazioni eccezionali nelle Promise in JavaScript
Ora impariamo a gestire le situazioni eccezionali verificatesi all'interno di una Promise. In caso di tale situazione, dobbiamo rifiutare la Promise utilizzando una funzione di rifiuto speciale, che viene automaticamente passata come secondo parametro della funzione della Promise:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
All'interno della funzione della Promise dobbiamo chiamare
resolve se tutto è andato normalmente, oppure
reject se si verifica una situazione eccezionale:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // dati della Promise
} else {
reject('errore nella Promise'); // il tuo testo di errore
}
}, 3000);
});
Quindi nel metodo then devi passare
non una, ma due funzioni come parametri: la prima funzionerà
se la Promise viene eseguita normalmente (risolta),
e la seconda - se viene eseguita con un errore (rifiutata):
promise.then(
function(result) {
console.log(result); // mostrerà il risultato della Promise
},
function(error) {
console.log(error); // mostrerà il testo dell'errore
}
);
Di solito, il codice sopra viene scritto in modo più compatto, in questo modo:
promise.then(function(result) {
console.log(result); // mostrerà il risultato della Promise
}, function(error) {
console.log(error); // mostrerà il testo dell'errore
});
Crea un codice asincrono che genererà
numeri casuali da 0 a 5.
Incorpora tutto questo in una Promise. Lascia che la Promise restituisca come risultato
il risultato della divisione di uno per il numero generato.
Lascia che la Promise venga eseguita con un errore
se si verifica una divisione per zero, e con successo
in tutti gli altri casi.