Определите порядок вывода в консоль

Порядок: 1, 7, 3, 5, 2, 6, 4. Таймер 4 создаётся во время выполнения микрозадач и встаёт после таймеров, зарегистрированных синхронно.

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

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

Порядок: 1, 7, 3, 5, 2, 6, 4. Таймер 4 создаётся во время выполнения микрозадач и встаёт после таймеров, зарегистрированных синхронно.

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

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

Условие

Укажите, в каком порядке появятся сообщения в консоли при выполнении следующего кода:

 console.log(1);

setTimeout(() => console.log(2));

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

Promise.resolve().then(() => setTimeout(() => console.log(4)));

Promise.resolve().then(() => console.log(5));

setTimeout(() => console.log(6));

console.log(7);

Ответ

Порядок: 1, 7, 3, 5, 2, 6, 4. Таймер 4 создаётся во время выполнения микрозадач и встаёт после таймеров, зарегистрированных синхронно.

Сначала выполняются console.log(1) и console.log(7). Затем первый then печатает 3, второй планирует таймер 4, третий печатает 5. После микрозадач последовательно выполняются таймеры 2, 6 и 4. Сам факт нахождения setTimeout внутри then не превращает callback таймера в микрозадачу.

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

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

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

Подробнее