Undtagelsessituationer i promises i JavaScript
Lad os nu lære at håndtere undtagelsessituationer, der er opstået inde i et promise. I tilfælde af en sådan situation skal vi afvise promiset ved hjælp af en speciel afvisningsfunktion, som automatisk indgår i den anden parameter i promise-funktionen:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Inde i promise-funktionen skal vi kalde
resolve, hvis alt gik normalt, eller
reject, hvis der opstod en undtagelsessituation:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // promisets data
} else {
reject('fejl i promise'); // din fejltekst
}
}, 3000);
});
Dernæst skal du i metoden then videregive
ikke én, men to funktioner som parametre: den første vil udløses,
hvis promiset udførtes normalt (blev resolved),
og den anden - hvis det udførtes med en fejl (blev rejected):
promise.then(
function(result) {
console.log(result); // vil udskrive promisets resultat
},
function(error) {
console.log(error); // vil udskrive fejlteksten
}
);
Som regel skrives ovenstående kode mere kompakt, sådan her:
promise.then(function(result) {
console.log(result); // vil udskrive promisets resultat
}, function(error) {
console.log(error); // vil udskrive fejlteksten
});
Lav asynkron kode, som vil generere
tilfældige tal fra 0 til 5.
Pak det hele ind i et promise. Lad promiset returnere resultatet af division af et med det genererede
tal som sit resultat. Lad promiset udføres med en fejl,
hvis der skete division med nul, og med succes
i alle andre tilfælde.