> Что происходит после выполнения микротасков в JavaScript и как обрабатываются макротаски и синхронный код? (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Альфа-банк
Стек: JavaScript
> Пример ответа
После выполнения всех синхронных операций в JavaScript (которые находятся в стеке вызовов) движок переходит к обработке очереди микротасков. Микротаски (например, Promise.then, MutationObserver, queueMicrotask) выполняются до того, как будет обработан следующий макротаск. Если во время выполнения микротасков добавляются новые микротаски, они также обрабатываются в рамках текущего цикла событий (event loop), пока очередь микротасков не опустеет.
После того как очередь микротасков очищена, движок берет один макротаск из очереди макротасков (например, setTimeout, setInterval, события ввода-вывода, рендеринг). Этот макротаск выполняется полностью, и затем снова проверяется очередь микротасков - цикл повторяется.
Таким образом, порядок обработки:
- Синхронный код (стек вызовов).
- Все микротаски (до полного опустошения очереди).
- Один макротаск.
- Возврат к шагу 2.
Это гарантирует, что микротаски имеют более высокий приоритет, чем макротаски, и выполняются между макротасками.
> Похожие задачи по frontend
Как улучшить сигнатуру функции, чтобы избежать передачи undefined?
Как модифицировать и отображать данные во frontend?
Почему ошибку в промисе лучше обрабатывать через catch, а не через console.error?
Можно ли выполнять более приоритетные промисы кроме setTimeout и что это дает пользователю
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью