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 :

javascriptlet 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 :

javascriptlet 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) :

javascriptpromise.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 :

javascriptpromise.then(function(result) {
  console.log(result); // affichera le résultat de la promesse
}, function(error) {
  console.log(error);  // affichera le texte de l'erreur
});
Задание 1

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.