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