Situations exceptionnelles dans les promesses en JavaScript
Apprenons maintenant à gérer les situations exceptionnelles survenues à l'intérieur d'une promesse. En cas de survenue d'une telle situation, nous devons rejeter la promesse à l'aide d'une fonction de rejet spéciale, qui est automatiquement passée en second paramètre de la fonction de la promesse :
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
À l'intérieur de la fonction de la promesse, nous devons appeler
resolve si tout s'est passé normalement, ou
reject si une situation exceptionnelle
est survenue :
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // données de la promesse
} else {
reject('erreur dans la promesse'); // votre texte d'erreur
}
}, 3000);
});
Ensuite, dans la méthode then, vous devez
passer non pas une, mais deux fonctions en paramètres :
la première fonctionnera si la promesse s'est exécutée
normalement (s'est résolue), et la seconde -
si elle s'est exécutée avec une erreur (a été rejetée) :
promise.then(
function(result) {
console.log(result); // affichera le résultat de la promesse
},
function(error) {
console.log(error); // affichera le texte de l'erreur
}
);
En règle générale, le code ci-dessus est écrit de manière plus compacte, comme ceci :
promise.then(function(result) {
console.log(result); // affichera le résultat de la promesse
}, function(error) {
console.log(error); // affichera le texte de l'erreur
});
Créez un code asynchrone qui générera des nombres
aléatoires de 0 à 5.
Enveloppez le tout dans une promesse. Que la promesse
renvoie comme résultat le résultat de la division de un
par le nombre généré. Que la promesse soit exécutée avec une erreur
si une division par zéro a eu lieu, et avec succès
dans tous les autres cas.