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