Вложенный таймер и микрозадача: порядок выполнения

Порядок: D, A, C, B. Вложенный таймер запускается отдельной будущей задачей, а микрозадача C выполняется после текущего callback.

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

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

Порядок: D, A, C, B. Вложенный таймер запускается отдельной будущей задачей, а микрозадача C выполняется после текущего callback.

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

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

Условие

Что выведет браузер?

setTimeout(() => {
  console.log('A');
  setTimeout(() => console.log('B'), 0);
  Promise.resolve().then(() => console.log('C'));
}, 0);
console.log('D');

Ответ

Порядок: D, A, C, B. Вложенный таймер запускается отдельной будущей задачей, а микрозадача C выполняется после текущего callback.

Когда первый таймер выполняет A, он только планирует B. Затем ставится реакция Promise C. После завершения callback выполняется очередь микрозадач, и лишь позже наступает очередь вложенного таймера. Реальные интервалы зависят от среды и нагрузки, но это не меняет указанную причинную последовательность.

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

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

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

Подробнее