Какой результат появится в консоли – пример 73

Порядок вывода: 5, 1, 3, 4, 2. Вложенный queueMicrotask добавляет новую микрозадачу в конец той же очереди, которая очищается до перехода к таймеру.

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

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

Порядок вывода: 5, 1, 3, 4, 2. Вложенный queueMicrotask добавляет новую микрозадачу в конец той же очереди, которая очищается до перехода к таймеру.

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

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

Условие

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

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

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

queueMicrotask(() => {
    console.log(3);
    queueMicrotask(() => console.log(4));
});

console.log(5);

Ответ

Порядок вывода: 5, 1, 3, 4, 2. Вложенный queueMicrotask добавляет новую микрозадачу в конец той же очереди, которая очищается до перехода к таймеру.

Сначала синхронно печатается 5. Затем выполняется ранее зарегистрированный then с 1, после него callback queueMicrotask с 3. Он регистрирует ещё одну микрозадачу с 4, и она также исполняется до задачи таймера.

Задержка 10 мс не заставляет таймер вклиниться между микрозадачами. Даже если срок таймера уже наступил, текущая микрозадачная очередь сначала должна освободиться.

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

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

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

Подробнее