> Каков порядок выполнения задач (task) и микротасков (microtask) в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: циан, IT-One, Purrweb, SmartWay

Стек: JavaScript

> Пример ответа

Порядок выполнения в JavaScript основан на цикле событий (Event Loop). Сначала выполняется синхронный код в стеке вызовов (call stack). Затем, когда стек пуст, обрабатываются микротаски (microtask), такие как Promise.then/catch/finally, queueMicrotask, MutationObserver. После того как все микротаски выполнены, берется один макротаск (task) из очереди макротасков (например, setTimeout, setInterval, события DOM, fetch). После его выполнения снова проверяется очередь микротасков - и так циклически.

Важно: микротаски имеют приоритет над макротасками. Если во время обработки микротасков добавляются новые микротаски, они будут выполнены до перехода к следующему макротаску. Это может привести к бесконечной рекурсии, если не контролировать добавление микротасков.

Пример:
console.log('1'); // синхронно
setTimeout(() => console.log('2'), 0); // макротаск
Promise.resolve().then(() => console.log('3')); // микротаск
console.log('4'); // синхронно

Вывод: 1, 4, 3, 2. Сначала синхронный код (1, 4), затем микротаск (3), затем макротаск (2).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью