← Назад к вопросам

Почему Event Loop называется Loop?

2.0 Middle🔥 221 комментариев
#JavaScript Core#Браузер и сетевые технологии

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI21 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Почему Event Loop называется Loop?

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

Механизм работы

Event Loop работает по следующему принципу: он постоянно циклится в поиске новых задач из очереди, выполняет их и ожидает появления новых.

while (eventLoop.waitForTask()) {
  const macrotask = eventLoop.nextTask();
  execute(macrotask);

  while (eventLoop.hasMicrotasks()) {
    const microtask = eventLoop.nextMicrotask();
    execute(microtask);
  }

  if (isRepaintTime()) {
    repaint();
  }
}

Это абстрактное представление, но оно показывает суть — Event Loop постоянно крутится в цикле.

Почему это цикл, а не просто очередь?

1. Бесконечный процесс

Event Loop не заканчивается, пока работает приложение. После обработки одной задачи он немедленно переходит к следующей.

setTimeout(() => console.log('Первый таймер'), 1000);
setTimeout(() => console.log('Второй таймер'), 500);

2. Повторяющиеся фазы

Event Loop проходит через одни и те же фазы в повторяющемся порядке:

  • Получить задачу из очереди (макротаска)
  • Выполнить все микротаски
  • Отрисовать (если нужно)
  • Вернуться к первому шагу
console.log('Старт');

setTimeout(() => {
  console.log('Таймер 1');
}, 0);

Promise.resolve()
  .then(() => console.log('Промис'));

console.log('Конец');

// Вывод:
// Старт
// Конец
// Промис
// Таймер 1

Это показывает циклическую природу Event Loop: сначала синхронный код, затем микротаски в цикле, потом макротаски.

Аналогия

Event Loop как очередь в магазине, которая постоянно обслуживает клиентов в цикле:

  1. Касса ждёт клиента
  2. Берёт первого клиента (макротаска)
  3. Обрабатывает его запрос
  4. Помогает срочным вопросам (микротаски)
  5. Закрывает кассу для отчёта (отрисовка)
  6. Возвращается к ожиданию следующего клиента

Это бесконечный цикл работы кассы, а не одноразовая обработка.

Почему "Loop", а не "Queue"?

Queue — это просто хранилище данных (берёшь — обработал — всё).

Loop — это процесс, который повторяется. Event Loop именно процесс, а не контейнер.

Вывод

Event Loop называется "Loop" потому, что это непрерывный циклический процесс, который постоянно крутится, обрабатывает задачи и ждёт новых. Это сердце асинхронного JavaScript, работающее в бесконечном цикле на протяжении всей жизни приложения.

Почему Event Loop называется Loop? | PrepBro