Что появится в консоли (пример 74)

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

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

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

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

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

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

Условие

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

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 регистрируется из микрозадачи, поэтому попадает после ранее созданных таймеров 2 и 6.

Синхронные строки печатают 1 и 7. Далее три микрозадачи соответственно печатают 3, ставят таймер 4 и печатают 5. Лишь после этого очередь переходит к таймерам. Регистрация таймера внутри then не заставляет его callback выполниться в той же микрозадаче.

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

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

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

Подробнее