Sobes.tech
Назад к вопросам
Senior
3

Объясни механизм Event Loop в браузере

Компании, где спрашивали
Type

Ответ от нейросети

sobes.tech AI

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

Основные компоненты:

  • Call Stack (стек вызовов) — сюда помещаются функции, которые нужно выполнить.
  • Web APIs — браузерные API (например, setTimeout, DOM-события), которые работают асинхронно.
  • Callback Queue (очередь колбэков) — сюда помещаются функции, готовые к выполнению после завершения асинхронных операций.

Как это работает:

  1. JavaScript выполняет код, помещая функции в Call Stack.
  2. Когда встречается асинхронная операция (например, setTimeout), она передается в Web API, а основной поток продолжает работу.
  3. По завершении асинхронной операции соответствующий колбэк помещается в Callback Queue.
  4. Event Loop постоянно проверяет, пуст ли Call Stack. Если он пуст, Event Loop берет первый колбэк из Callback Queue и помещает его в Call Stack для выполнения.

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

Пример:

console.log('Start');
setTimeout(() => {
  console.log('Timeout');
}, 0);
console.log('End');

Вывод будет:

Start
End
Timeout

Потому что колбэк setTimeout попадает в очередь и выполнится после того, как основной стек освободится.