> Как проходят таски в event loop (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Tilda
Стек: JavaScript
> Пример ответа
Event Loop - это механизм, который позволяет JavaScript, будучи однопоточным, выполнять асинхронные операции без блокировки основного потока. Таски (задачи) проходят через несколько стадий:
- Синхронный код выполняется сразу в стеке вызовов (call stack).
- Микротаски (Microtasks) - ставятся в очередь после каждой завершённой макротаски. Сюда попадают:
Promise.then/catch/finallyqueueMicrotask()MutationObserverОчередь микротасок обрабатывается полностью до перехода к следующей макротаске.
- Макротаски (Macrotasks) - берутся из очереди по одной за цикл. Примеры:
setTimeout,setInterval- События DOM (click, load)
fetch(коллбэки)requestAnimationFrame(выполняется перед рендерингом)
Порядок выполнения:
- Выполнить весь синхронный код.
- Обработать все микротаски (если в процессе добавляются новые - они тоже выполняются).
- Взять одну макротаску из очереди.
- Повторить цикл.
Пример:
JAVASCRIPTconsole.log('1'); // синхронноsetTimeout(() => console.log('2'), 0); // макротаскаPromise.resolve().then(() => console.log('3')); // микротаскаconsole.log('4'); // синхронно// Вывод: 1, 4, 3, 2
Таким образом, микротаски всегда имеют приоритет над макротасками, что критично для производительности и предсказуемости асинхронного кода.
> Похожие задачи по frontend
Как реализуется инкапсуляция в JavaScript
Как удалить дубликаты из массива чисел и строк без использования Set в JavaScript?
Как улучшить сигнатуру функции, чтобы избежать передачи undefined?
Как модифицировать и отображать данные во frontend?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью