Определите, что появится в консоли в примере №41

Как написано, вывода не будет: async-стрелка создана, но не вызвана. При вызове результат зависит от somePromise, а finally напечатает 'Oh finally!' в обоих случаях.

Короткий ответ

Что ответить на собеседовании

Как написано, вывода не будет: async-стрелка создана, но не вызвана. При вызове результат зависит от somePromise, а finally напечатает 'Oh finally!' в обоих случаях.

Подробный разбор

Ответ с пояснениями

Условие

Укажите, какой текст будет выведен в консоль при выполнении следующего кода:

 async () => {
    try {
        console.log(await somePromise);
    } catch {
        throw new Error('Oops didn\'t work');
    } finally {
        console.log('Oh finally!');
    }
 }

Ответ

Как написано, вывода не будет: async-стрелка создана, но не вызвана. При вызове результат зависит от somePromise, а finally напечатает 'Oh finally!' в обоих случаях.

Если somePromise выполнится успешно, сначала печатается его значение, затем Oh finally!. Если отклонится или чтение somePromise вызовет ошибку, catch выбросит новый Error, после чего finally всё равно выполнится; возвращённый Promise async-функции будет отклонён. finally не проглатывает эту ошибку. Для проверки нужно вызвать функцию и обработать её Promise; сообщение нового Error не является отдельным console.log из данного фрагмента.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее