retour au cours

Erreur dans setTimeout

Qu’en pensez-vous ? Est-ce que le .catch va se déclencher ? Expliquez votre réponse.

new Promise(function(resolve, reject) {
  setTimeout(() => {
    throw new Error("Whoops!");
  }, 1000);
}).catch(alert);

La réponse est: Non, cela n’arrivera pas::

new Promise(function(resolve, reject) {
  setTimeout(() => {
    throw new Error("Whoops!");
  }, 1000);
}).catch(alert);

Comme décrit dans le chapitre, il y a un “try..catch implicite” autour du code de la fonction. Toutes les erreurs synchrones sont donc traitées.

Mais ici, l’erreur n’est pas générée pendant l’exécution de l’exécuteur, mais plus tard. Donc la promesse ne peut pas tenir.