Undantagssituationer i promiser i JavaScript
Låt oss nu lära oss att hantera undantagssituationer som inträffar inuti en promise. Om en sådan situation uppstår bör vi avvisa promisen med hjälp av en speciell avvisningsfunktion, som automatiskt hamnar i den andra parametern i promise-funktionen:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Inuti promise-funktionen bör vi anropa
resolve om allt gick normalt, eller
reject om en undantagssituation
uppstod:
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 feltext
}
}, 3000);
});
Sedan i metoden then ska du
skicka inte en, utan två funktioner som parametrar: den första kommer att triggas
om promisen fungerade normalt (löstes),
och den andra - om den fungerade med ett fel (avvisades):
promise.then(
function(result) {
console.log(result); // visar promise-resultatet
},
function(error) {
console.log(error); // visar feltexten
}
);
Som regel skrivs koden ovan mer kompakt, så här:
promise.then(function(result) {
console.log(result); // visar promise-resultatet
}, function(error) {
console.log(error); // visar feltexten
});
Skapa en asynkron kod som genererar
slumpmässiga tal från 0 till 5.
Svep in allt detta i en promise. Låt promisen returnera
resultatet av att dela ett med det genererade
talet. Låt promisen uppfylla med ett fel
om division med noll inträffade, och med framgång
i alla andra fall.