Как queueMicrotask взаимодействует с цепочкой then

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

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

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

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

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

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

Условие

Определите вывод:

Promise.resolve().then(() => console.log(1)).then(() => console.log(2));
queueMicrotask(() => console.log(3));
setTimeout(() => console.log(4), 0);
console.log(5);

Ответ

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

Цепочка then не резервирует непрерывный участок очереди для всех своих звеньев. Сначала поставлены обработчик 1 и callback 3; только после 1 становится готов обработчик 2. Таймер выполняется после завершения этой очереди микрозадач. Это отличается от двух console.log внутри одного then.

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

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

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

Подробнее