Что выведет код Junior Промисы и async/await обновлено
Ошибка в async-функции
Вопрос
Что выведет код? По строке на каждый вывод.
async function f() { throw new Error('x'); }
f().catch((e) => console.log('поймал ' + e.message));
console.log('синхронно');
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: синхронно, поймал x. Почему так Исключение внутри async превращается в отклонённый промис, а не в синхронный throw.
Что выведет
синхронно
поймал x
Разбор
Почему так
Исключение внутри async превращается в отклонённый промис, а не в синхронный throw. Поэтому try/catch вокруг вызова без await ничего не поймает.
Вывод
синхронно
поймал x
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.