0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>С помощью механизма<strong>Event Loop</strong>(Цикл событий) становится возможным выполнять асинхронный код в JavaScript.</p>
1
<p>С помощью механизма<strong>Event Loop</strong>(Цикл событий) становится возможным выполнять асинхронный код в JavaScript.</p>
2
<p>Event Loop - это специальный механизм на уровне движка js, который координирует работу трёх сущностей:<strong>Call Stack</strong>(стэк вызовов),<strong>Web API</strong>(API, предоставляемый браузером),<strong>Callback Queue</strong>(очередь колбэков).</p>
2
<p>Event Loop - это специальный механизм на уровне движка js, который координирует работу трёх сущностей:<strong>Call Stack</strong>(стэк вызовов),<strong>Web API</strong>(API, предоставляемый браузером),<strong>Callback Queue</strong>(очередь колбэков).</p>
3
<p>Работают они следующим образом: движок js анализирует код. Когда он встречает вызов какой-то функции, он перемещает эту функцию в Call Stack. Если эта функция синхронная (например, console.log()), то она сразу же исполняется, покидает стэк и на её место приходит следующая функция. Если же эта функция асинхронная, например, setTimeout(), обработчик событий, сетевой запрос и т.д., то на помощь приходит браузер со своим Web API (мы же помним, что JavaScript - это однопоточный язык, и сам работать в многопоточном режиме он не может). Event Loop перемещает колбэк асинхронной функции в Web API, а сама асинхронная функция уходит из стэка вызовов.<em>То есть, пока колбэк асинхронной функции находится под управлением Web API, движок js продолжает выполнять другие операции!</em></p>
3
<p>Работают они следующим образом: движок js анализирует код. Когда он встречает вызов какой-то функции, он перемещает эту функцию в Call Stack. Если эта функция синхронная (например, console.log()), то она сразу же исполняется, покидает стэк и на её место приходит следующая функция. Если же эта функция асинхронная, например, setTimeout(), обработчик событий, сетевой запрос и т.д., то на помощь приходит браузер со своим Web API (мы же помним, что JavaScript - это однопоточный язык, и сам работать в многопоточном режиме он не может). Event Loop перемещает колбэк асинхронной функции в Web API, а сама асинхронная функция уходит из стэка вызовов.<em>То есть, пока колбэк асинхронной функции находится под управлением Web API, движок js продолжает выполнять другие операции!</em></p>
4
<p>Что же происходит с колбэком? В случае, например, setTimeout(), Web API ожидает истечения указанного времени, затем Event Loop перемещает этот колбэк в Callback Queue (очередь колбэков). Когда стэк вызовов освобождается, Event Loop перемещает в него наш колбэк из очереди колбэков, после чего колбэк наконец исполняется и покидает стэк вызовов.</p>
4
<p>Что же происходит с колбэком? В случае, например, setTimeout(), Web API ожидает истечения указанного времени, затем Event Loop перемещает этот колбэк в Callback Queue (очередь колбэков). Когда стэк вызовов освобождается, Event Loop перемещает в него наш колбэк из очереди колбэков, после чего колбэк наконец исполняется и покидает стэк вызовов.</p>
5
<p>Этот процесс повторяется до тех пор, пока весь js код не будет выполнен.</p>
5
<p>Этот процесс повторяется до тех пор, пока весь js код не будет выполнен.</p>
6
<p><a>Здесь</a>представлен наглядный пример работы Event Loop, очень советую ознакомиться!</p>
6
<p><a>Здесь</a>представлен наглядный пример работы Event Loop, очень советую ознакомиться!</p>