Микрозадачи между двумя callbacks таймеров

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

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

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

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

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

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

Условие

В браузере выполнен код:

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

Назовите порядок вывода.

Ответ

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

Оба таймера регистрируются в одном скрипте с одинаковой задержкой. Синхронный вывод 4 происходит первым. Неверно считать, что все callbacks таймеров обязательно выполняются до всех Promise: важен момент создания микрозадач и контрольные точки их обработки между задачами.

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

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

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

Подробнее