PassFront
  1. PassFront
  2. База знаний
  3. Асинхронность и Event Loop

Что такое событийный цикл?

Асинхронность и Event Loop

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

Модель

  • Call Stack — синхронный код (одна операция за раз).
  • Web API — таймеры, сеть, DOM (вне движка).
  • Очередь микрозадач — Promise, queueMicrotask, await.
  • Очередь макрозадач — setTimeout, события, I/O.

Алгоритм

1. Выполнить синхронный код (стек).
2. Опустошить ВСЮ очередь микрозадач.
3. Взять ОДНУ макрозадачу.
4. Повторить с шага 2.
console.log('1');
setTimeout(() => console.log('2'), 0);
Promise.resolve().then(() => console.log('3'));
console.log('4');
// 1, 4, 3, 2

Зачем нужен

Обеспечивает асинхронность в одном потоке: долгие операции выполняются вне потока, а их коллбэки цикл выполняет, когда стек свободен — интерфейс не блокируется.

Нюансы

  • Микрозадачи приоритетнее макрозадач.
  • Тяжёлый синхронный код блокирует цикл (UI «замерзает»).

Коротко для собеседования

Event Loop — цикл, который при пустом стеке выполняет все микрозадачи (Promise), затем одну макрозадачу (setTimeout), и так по кругу. Даёт асинхронность в однопоточном JS без блокировки UI. Микрозадачи приоритетнее макрозадач.

Подробнее: learn.javascript.ru — Event Loop

Другие вопросы раздела