Ми хочемо зробити цей проєкт з відкритим кодом доступним для людей у всьому світі.

Допоможіть перекласти цей підручник вашою мовою!

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

Помилка в 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” навколо коду функції. Тому обробляються усі синхронні помилки.

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