> Каков порядок выполнения синхронных задач, микротасков и макротасков в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: amoCRM, IT-One, Библио-Глобус
Стек: JavaScript
> Пример ответа
Порядок выполнения в JavaScript (Event Loop) строго регламентирован: сначала выполняются все синхронные задачи (код в текущем стеке вызовов), затем - все микротаски (Promise.then/catch/finally, queueMicrotask, MutationObserver), и только после этого - один макротаск (setTimeout, setInterval, I/O, UI-рендеринг). После выполнения одного макротаска цикл повторяется: снова обрабатываются все накопившиеся микротаски, затем следующий макротаск и так далее.
Пример:
JAVASCRIPTconsole.log('1'); // синхроннаяsetTimeout(() => console.log('2'), 0); // макротаскPromise.resolve().then(() => console.log('3')); // микротаскconsole.log('4'); // синхронная
Вывод: 1, 4, 3, 2. Сначала синхронные 1 и 4, затем микротаск 3, затем макротаск 2.
> Похожие задачи по frontend
Почему async функция возвращает Promise
Что должен возвращать колбэк в методе sort в JavaScript
Как собрать неопределённое количество аргументов функции в JavaScript и работать с ними
Как работает функция groupBy в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью