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

Что такое RunLoop?

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

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

Общая идея

RunLoop — бесконечный цикл, который ждёт события/задачи и обрабатывает их по мере поступления. Термин встречается в разных платформах (iOS RunLoop, GUI-фреймворки). В вебе аналог — Event Loop.

Event Loop в JavaScript

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

Зачем нужен

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

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

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

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