Что выведет код Middle Промисы и async/await обновлено
Цепочка: забытый return, finally и восстановление
Вопрос
Что выведет код? По строке на каждый вывод.
Promise.resolve(1)
.then((v) => { v + 1; })
.then((v) => {
console.log('a', v);
throw new Error('x');
})
.finally(() => console.log('finally'))
.catch((e) => {
console.log('catch', e.message);
return 'восстановились';
})
.then((v) => console.log('b', v));
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: a undefined, finally, catch x, b восстановились. В первом then тело в фигурных скобках без return, поэтому дальше идёт undefined: a undefined.
Что выведет
a undefined
finally
catch x
b восстановились
Разбор
В первом then тело в фигурных скобках без return, поэтому дальше идёт undefined: a undefined. Затем бросается ошибка. finally вызывается при любом исходе и пропускает ошибку дальше без изменений. catch ловит её и возвращает значение, после чего цепочка снова успешна: последний then получает восстановились.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.