Unntakssituasjoner i promises i JavaScript
La oss nå lære å håndtere unntakssituasjoner som oppstår inne i et promise. I tilfelle en slik situasjon oppstår må vi avvise promise ved hjelp av en spesiell avvisningsfunksjon, som automatisk blir plassert i den andre parameteren til promise-funksjonen:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Inne i promise-funksjonen må vi kalle
resolve hvis alt gikk normalt, eller
reject hvis det oppstod en unntakssituasjon:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // promise-data
} else {
reject('error in promise'); // din feiltekst
}
}, 3000);
});
Deretter i metoden then må du
sende ikke én, men to funksjoner som parametere:
den første vil kjøres hvis promise fungerte normalt
(resolved),
og den andre - hvis det fungerte med feil
(rejected):
promise.then(
function(result) {
console.log(result); // vil vise promise-resultatet
},
function(error) {
console.log(error); // vil vise feilteksten
}
);
Som regel skrives koden ovenfor mer kompakt, slik:
promise.then(function(result) {
console.log(result); // vil vise promise-resultatet
}, function(error) {
console.log(error); // vil vise feilteksten
});
Lag asynkron kode som vil generere
tilfeldige tall fra 0 til 5.
Pakke alt inn i et promise. La promise returnere
resultatet av å dele en på det genererte
tallet som sitt resultat. La promise fullføres med feil,
hvis det skjedde en divisjon med null, og med suksess
i alle andre tilfeller.