Порядок вывода в консоль (задача 56)

В консоли появятся 1, 3, 6, 7. Обработчики 2, 4 и 5 не вызываются: первая цепочка успешна, вторая переносит отклонение до catch.

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

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

В консоли появятся 1, 3, 6, 7. Обработчики 2, 4 и 5 не вызываются: первая цепочка успешна, вторая переносит отклонение до catch.

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

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

Условие

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

Promise.resolve(1)
    .then(x => console.log(1))
    .catch(x => console.log(2))
    .then(x => console.log(3))

Promise.reject(2)
    .then(x => console.log(4))
    .then(x => console.log(5))
    .catch(x => console.log(6))
    .then(x => console.log(7))

Ответ

В консоли появятся 1, 3, 6, 7. Обработчики 2, 4 и 5 не вызываются: первая цепочка успешна, вторая переносит отклонение до catch.

Обработчик печати 1 возвращает undefined, после чего успешное состояние проходит через catch первой цепочки и доходит до печати 3. Во второй цепочке оба then без onRejected передают причину отклонения дальше, занимая последовательные шаги микрозадач. Затем catch печатает 6 и нормально возвращается, поэтому следующий then уже выполняется и печатает 7. Отсутствующий обработчик не делает переход по цепочке синхронным.

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

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

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

Подробнее