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

Порядок вывода: 1, 4, 6, 3, 2, 5. Сначала выполняются синхронные console.log, затем микрозадача Promise, после неё — таймеры.

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

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

Порядок вывода: 1, 4, 6, 3, 2, 5. Сначала выполняются синхронные console.log, затем микрозадача Promise, после неё — таймеры.

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

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

Условие

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

console.log(1);
setTimeout(function() {
    console.log(2);
});

Promise.resolve(3).then(console.log);

console.log(4);
setTimeout(function() {
    console.log(5);
}, 0);
console.log(6);

Ответ

Порядок вывода: 1, 4, 6, 3, 2, 5. Сначала выполняются синхронные console.log, затем микрозадача Promise, после неё — таймеры.

Promise.resolve(3) уже выполнен, но переданный в then console.log вызывается асинхронно после текущего стека. Первый setTimeout с опущенной задержкой и второй с нулём регистрируют отложенные задачи. Они не могут вклиниться в синхронные строки 1, 4, 6; при данном порядке регистрации таймер 2 выполняется раньше таймера 5.

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

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

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

Подробнее