Что выведет код 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 ошибок.

Термины по теме