назад до уроку

Помилка в setTimeout

Що ви думаєте? Чи виконається .catch? Поясніть свою відповідь.

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

Відповідь: ні, не виконається:

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

Як було написано в розділі, тут присутній “прихований try..catch” навколо коду функції. Тому обробляються усі синхронні помилки.

У цьому прикладі помилка генерується не по ходу виконання коду, а пізніше. Тому проміс не може обробити її.