Uitzonderlijke situaties in promises in JavaScript
Laten we nu leren hoe we uitzonderlijke situaties die zich voordoen binnen een promise kunnen afhandelen. In het geval van een dergelijke situatie moeten we de promise afwijzen met behulp van een speciale afwijs-functie, die automatisch in de tweede parameter van de promise-functie terechtkomt:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Binnen de promise-functie moeten we
resolve aanroepen,
als alles normaal is verlopen, of
reject, als er een uitzonderlijke
situatie is opgetreden:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // data van de promise
} else {
reject('error in promise'); // jouw fouttekst
}
}, 3000);
});
Vervolgens moet je in de methode then niet één,
maar twee functies doorgeven als parameters: de eerste werkt,
als de promise normaal is uitgevoerd (is geresolved),
en de tweede - als het is uitgevoerd met een fout (is gerejected):
promise.then(
function(result) {
console.log(result); // geeft het resultaat van de promise weer
},
function(error) {
console.log(error); // geeft de fouttekst weer
}
);
Over het algemeen wordt de bovenstaande code korter geschreven, zoals hier:
promise.then(function(result) {
console.log(result); // geeft het resultaat van de promise weer
}, function(error) {
console.log(error); // geeft de fouttekst weer
});
Maak asynchrone code die willekeurige
getallen genereert van 0 tot 5.
Verpak dit alles in een promise. Laat de promise als resultaat
het resultaat teruggeven van het delen van één door het gegenereerde
getal. Laat de promise met een fout voltooien,
als er een deling door nul heeft plaatsgevonden, en met succes
in alle andere gevallen.