torna alle lezioni

Error in setTimeout

Che cosa pensi? Il .catch sarà eseguito? Spiega la tua risposta.

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

La risposta è: no, non sarà eseguito:

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

Come detto nel capitolo, c’è un"try..catch implicito" attorno al codice della funzione. In questo modo tutti gli errori sincroni sono gestiti.

Tuttavia qui l’errore è generato non mentre sta venendo eseguito l’esecutore, ma dopo. Per questo motivo la promise non può gestirlo.