> Что такое event loop в JavaScript и как он работает с микрозадачами и макрозадачами (JavaScript)
Уровень: junior · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы
Компании: ЭНИРАН
Стек: Node.js, JavaScript
> Пример ответа
Event Loop - это механизм, который позволяет JavaScript выполнять неблокирующие асинхронные операции, несмотря на однопоточность. Он постоянно проверяет стек вызовов и очереди задач.
Макрозадачи (macrotasks) - это основные единицы планирования: setTimeout, setInterval, setImmediate (в Node.js), I/O, рендеринг UI. Они попадают в очередь макрозадач.
Микрозадачи (microtasks) - это более приоритетные задачи: Promise.then/catch/finally, queueMicrotask, MutationObserver. Они попадают в очередь микрозадач.
Алгоритм работы:
- Выполняется текущая макрозадача (весь синхронный код).
- Очищается вся очередь микрозадач (по одной, пока не опустеет).
- Если есть микрозадачи, порождённые во время выполнения микрозадач - они тоже выполняются (рекурсивно).
- Затем берётся следующая макрозадача из очереди.
- Между макрозадачами может произойти рендеринг (в браузере).
Пример:
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).
В Node.js цикл событий имеет фазы (таймеры, I/O, idle, poll, check, close), но принцип с микрозадачами тот же: после каждой фазы выполняется вся очередь микрозадач.
> Похожие задачи по JavaScript
Является ли рендеринг в React блокирующей операцией для исполнения JavaScript кода
Как вы писали модульные и интеграционные тесты
Как использовать асинхронные функции при переборе элементов, например в reduce
> Похожие задачи по frontend
Был ли у вас опыт работы с React Native?
Использовал ли ты Next.js?
Почему форма отправляется два раза при сабмите в React
Как вы писали модульные и интеграционные тесты
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью