Что такое Event Loop?

MiddleJavaScript #javascript #async

Вопрос

Что такое Event Loop в JavaScript?

Короткий ответ

Event Loop — это механизм, который позволяет JavaScript выполнять асинхронные операции, несмотря на однопоточную модель выполнения.

Подробный ответ

JavaScript выполняет код в одном потоке с помощью Call Stack (стека вызовов). Когда встречается асинхронная операция (setTimeout, сетевой запрос, промис), она передаётся окружению (браузеру или Node.js), а стек продолжает выполнять синхронный код.

Когда асинхронная операция завершается, её callback помещается в очередь:

  • Microtask Queue — для промисов (.then, queueMicrotask), выполняется сразу после текущей синхронной задачи, до следующего рендера.
  • Macrotask Queue (Task Queue) — для setTimeout, setInterval, событий DOM.

Event Loop постоянно проверяет: свободен ли Call Stack? Если да — сначала выполняет все микрозадачи, затем берёт одну макрозадачу из очереди.

Пример

console.log('1')

setTimeout(() => {
  console.log('2')
}, 0)

console.log('3')

Результат:

1
3
2

setTimeout с задержкой 0 всё равно выполнится после всего синхронного кода, потому что попадает в очередь макрозадач, а не выполняется немедленно.

Дополнительные вопросы

  • Что такое Call Stack?
  • Что такое Task Queue?
  • Чем Microtask Queue отличается от Macrotask Queue?

Связанные вопросы