Ошибка в 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» вокруг кода функции. Поэтому обрабатываются все синхронные ошибки.
В данном примере ошибка генерируется не по ходу выполнения кода, а позже. Поэтому промис не может обработать её.