Как написано, вывода не будет: async-стрелка создана, но не вызвана. При вызове результат зависит от somePromise, а finally напечатает 'Oh finally!' в обоих случаях.
Определите, что появится в консоли в примере №41
Как написано, вывода не будет: 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 из данного фрагмента.