TGViewer
Node.js Backend | YeaHub Node.js Backend | YeaHub @yeahub_node_backend · 465 subscribers
Post #396 161
😎 Event Loop в Node.js

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

🙂 Фазы event loop
1) Timers
Сюда попадают коллбеки setTimeout и setInterval. Но! Выполняются они не строго по миллисекундам, а когда цикл доберётся до этой фазы

2) Pending callbacks
Выполняются отложенные системные коллбеки (например, ошибки из сетевых операций)

3) Idle, prepare
Внутренние операции, используемые самой платформой Node.js

4) Poll
Самая важная фаза: тут обрабатываются новые I/O события (сокеты, файлы, сетевые запросы). Если работы нет — Node может подождать

5) Check
Фаза для setImmediate. Все такие коллбеки выполняются именно тут, сразу после poll

6) Close callbacks
Закрытия соединений (socket.on('close') и т.п.)

⸻

🍴 Microtasks: process.nextTick & Promises
Есть ещё «микрозадачи», которые выполняются между фазами
1) process.nextTick — выполняется даже раньше, чем промисы
2) Промисы (.then/.catch/finally) — выполняются сразу после текущей операции, до перехода к следующей фазе.

😱 setTimeout vs setImmediate
Иногда спрашивают: «Что быстрее — setTimeout(..., 0) или setImmediate?»
— setTimeout(..., 0) попадает в фазу timers, то есть выполнится на следующем проходе цикла
— setImmediate идёт в фазу check, сразу после poll

На практике setImmediate обычно срабатывает раньше, особенно после I/O операций

🚀 Пост Guru Node.js: @DemetraIT
  • ❤ 4
  • 🏆 3
  • 🔥 2
More from @yeahub_node_backend
  1. Oct 9, 2026#book #начинающие 📚 Node.js: разработка приложений в микросервисной архитектуре с нуля Ос…
  2. Oct 8, 2026#Собес #volume #bind #mount 🤔 Как считать данные, записанные контейнером? 💬 Кратко: Данн…
  3. Oct 7, 2026#Собес #event_loop #main_thread #blocking 🤔 Заблокирует ли бесконечный цикл взаимодействи…
  4. Oct 5, 2026#Собес #event_loop #asynchronous #nodejs 🤔 Что такое process.nextTick() 💬 Кратко: proces…
  5. Oct 2, 2026#podcast #все 📚 Kolesa Podcast Podcast by IT-компания Kolesa Group. В целом он обо всём и…
  6. Oct 1, 2026#Собес #date #timestamp #interval 🤔 Как работать с датами и временными интервалами в SQL?…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →