Что будет выведено в консоль (пример 87)

В исходном виде код не выполняется: лишний I нарушает синтаксис, а у Promise нет метода them. После исправления I и замены them на then вывод будет 2, затем undefined.

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

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

В исходном виде код не выполняется: лишний I нарушает синтаксис, а у Promise нет метода them. После исправления I и замены them на then вывод будет 2, затем undefined.

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

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

Условие

Определите, какой вывод появится в консоли при выполнении следующего кода:

 Promise.resolve(1)
.them(x => x + 1)    I
.them(x => { throw x })
.them(x => console.log(x))
.catch(err => console.log(err))
.them(x => Promise.resolve(x))
.catch(err => console.log(err))
.them(x => console.log(x))

Ответ

В исходном виде код не выполняется: лишний I нарушает синтаксис, а у Promise нет метода them. После исправления I и замены them на then вывод будет 2, затем undefined.

Promise.resolve(1) передаёт 1 первому обработчику, тот возвращает 2. Следующий выбрасывает 2, поэтому ближайший success-handler пропускается. catch печатает 2 и возвращает undefined, восстанавливая fulfilled-состояние цепочки.

Дальше Promise.resolve(undefined) успешно завершается; второй catch не вызывается, а последний then печатает undefined. Если убрать лишь лишний I, первая попытка вызвать .them даст TypeError вне цепочки, и её собственный catch не успеет быть присоединён.

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

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

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

Подробнее