Порядок вывода в консоль (пример 57)

Порядок вывода: 1, 6, 3, 7. Обе цепочки проходят через отдельные реакции Promise; пропуск неподходящего обработчика тоже продвигает цепочку через микрозадачи.

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

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

Порядок вывода: 1, 6, 3, 7. Обе цепочки проходят через отдельные реакции Promise; пропуск неподходящего обработчика тоже продвигает цепочку через микрозадачи.

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

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

Условие

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

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))
    .catch(x => console.log(6))
    .then(x => console.log(7))

Ответ

Порядок вывода: 1, 6, 3, 7. Обе цепочки проходят через отдельные реакции Promise; пропуск неподходящего обработчика тоже продвигает цепочку через микрозадачи.

В первой цепочке fulfilled-handler печатает 1 и возвращает undefined. Следующий catch пропускается, передавая успешное состояние к then с 3.

Во второй цепочке первый then не обрабатывает rejection: ошибка передаётся дальше. catch печатает 6, возвращает undefined и восстанавливает fulfilled-состояние, после чего then печатает 7. Из-за чередования очередей двух цепочек 6 появляется до 3. Числа 2 и 4 не выводятся.

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

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

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

Подробнее