/
Вопросы и ответы
/
JavaScript
/

event loop js что это

event loop js что это

2 года назад

Nikolai Gagarinov

Ответы

1

С помощью механизма Event Loop (Цикл событий) становится возможным выполнять асинхронный код в JavaScript.

Event Loop - это специальный механизм на уровне движка js, который координирует работу трёх сущностей: Call Stack (стэк вызовов), Web API (API, предоставляемый браузером), Callback Queue (очередь колбэков).

Работают они следующим образом: движок js анализирует код. Когда он встречает вызов какой-то функции, он перемещает эту функцию в Call Stack. Если эта функция синхронная (например, console.log()), то она сразу же исполняется, покидает стэк и на её место приходит следующая функция. Если же эта функция асинхронная, например, setTimeout(), обработчик событий, сетевой запрос и т.д., то на помощь приходит браузер со своим Web API (мы же помним, что JavaScript - это однопоточный язык, и сам работать в многопоточном режиме он не может). Event Loop перемещает колбэк асинхронной функции в Web API, а сама асинхронная функция уходит из стэка вызовов. То есть, пока колбэк асинхронной функции находится под управлением Web API, движок js продолжает выполнять другие операции!

Что же происходит с колбэком? В случае, например, setTimeout(), Web API ожидает истечения указанного времени, затем Event Loop перемещает этот колбэк в Callback Queue (очередь колбэков). Когда стэк вызовов освобождается, Event Loop перемещает в него наш колбэк из очереди колбэков, после чего колбэк наконец исполняется и покидает стэк вызовов.

Этот процесс повторяется до тех пор, пока весь js код не будет выполнен.

Здесь представлен наглядный пример работы Event Loop, очень советую ознакомиться!

2 года назад

Кирилл Маркеев

1

Если что Event Loop не находится на уровне движка, и тем более не является его частью. Event Loop обеспечивается исключительно средой выполнения, это либо libuv API в случае Node.js, либо внутренний цикл событий Chrome.

2 года назад

0

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

Основные этапы работы event loop:

  1. События и задачи попадают в очередь сообщений (message queue).
  2. Event loop извлекает первое событие из очереди и передает его обработчику.
  3. Обработчик выполняется.
  4. Event loop переходит к следующему событию в очереди.

Это позволяет JavaScript выполнять асинхронные операции, такие как запросы к серверу, без блокировки основного потока исполнения.

Задачки на event loop часто спрашиваются на собеседованиях.

год назад

Elena Gromova