event loop js что это

Аватар пользователя user-c56c2fe700759faf
user-c56c2fe700759faf
02 января 2024

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

1 0
Аватар пользователя Кирилл Маркеев
Кирилл Маркеев
07 апреля 2023

С помощью механизма 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, очень советую ознакомиться!

1 1
Аватар пользователя Elena Gromova
Elena Gromova
18 июня 2024

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

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

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

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

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

0 0
Познакомьтесь с основами JavaScript бесплатно