> Что происходит после выполнения микротасков в JavaScript и как обрабатываются макротаски и синхронный код? (JavaScript)

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

Компании: Альфа-банк

Стек: JavaScript

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

После выполнения всех синхронных операций в JavaScript (которые находятся в стеке вызовов) движок переходит к обработке очереди микротасков. Микротаски (например, Promise.then, MutationObserver, queueMicrotask) выполняются до того, как будет обработан следующий макротаск. Если во время выполнения микротасков добавляются новые микротаски, они также обрабатываются в рамках текущего цикла событий (event loop), пока очередь микротасков не опустеет.

После того как очередь микротасков очищена, движок берет один макротаск из очереди макротасков (например, setTimeout, setInterval, события ввода-вывода, рендеринг). Этот макротаск выполняется полностью, и затем снова проверяется очередь микротасков - цикл повторяется.

Таким образом, порядок обработки:

  1. Синхронный код (стек вызовов).
  2. Все микротаски (до полного опустошения очереди).
  3. Один макротаск.
  4. Возврат к шагу 2.

Это гарантирует, что микротаски имеют более высокий приоритет, чем макротаски, и выполняются между макротасками.

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

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