Uitsonderlike situasies in beloftes in JavaScript
Laat ons nou leer hoe om uitsonderlike situasies wat binne 'n belofte plaasgevind het, te hanteer. In die geval van so 'n situasie moet ons die belofte verwerp met behulp van 'n spesiale verwerpingsfunksie, wat outomaties in die tweede parameter van die beloftese funksie beland:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Binne die beloftese funksie moet ons
resolve aanroep, indien alles normaal verloop het, of
reject, indien daar 'n uitsonderlike
situasie ontstaan het:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // data van die belofte
} else {
reject('fout in belofte'); // jou foutteks
}
}, 3000);
});
Dan moet jy in die then metode nie een nie, maar
twee funksies as parameters oordra: die eerste sal werk
as die belofte normaal uitgevoer het (resolved),
en die tweede - as dit met 'n fout uitgevoer het (rejected):
promise.then(
function(result) {
console.log(result); // sal die resultaat van die belofte uitdruk
},
function(error) {
console.log(error); // sal die foutteks uitdruk
}
);
Gewoonlik word die bostaande kode meer kompak geskryf, soos volg:
promise.then(function(result) {
console.log(result); // sal die resultaat van die belofte uitdruk
}, function(error) {
console.log(error); // sal die foutteks uitdruk
});
Maak 'n asinkrone kode wat lukrake getalle sal genereer
van 0 tot 5.
Pak alles in 'n belofte. Laat die belofte sy resultaat
die resultaat van die deling van een deur die gegenereerde getal teruggee.
Laat die belofte met 'n fout voltooi,
indien deling deur nul plaasgevind het, en met sukses
in alle ander gevalle.