Skip to Content
Express and MongooseEvent LoopPhases of Event Loop

Phases of Event Loop

🔄 Event Loop এর ফেইজসমূহ (Phases of Event Loop)

Node.js এর Event Loop মূলত ৬টি ধাপে কাজ করে। প্রতিটি ধাপ বা phase একটি নির্দিষ্ট ধরণের callback বা কাজ প্রসেস করে।


Timers Phase (টাইমার ফেইজ)

👉 setTimeout() এবং setInterval() এর জন্য নির্ধারিত সময়ের পরে যেসব callback চলে, সেগুলো এখানে এক্সিকিউট হয়।

setTimeout(() => { console.log("Timer callback"); }, 1000);

Pending Callbacks Phase

👉 কিছু অপারেশন যেমন TCP errors, যেখানে callback দেরি করে আসে, তা এখানে এক্সিকিউট হয়।

  • এটি খুব বেশি ব্যবহৃত নয়, কিন্তু OS নির্ভর callback-গুলো এখানে আসতে পারে।

৩. Idle, Prepare Phase (Internal use)

👉 এটি Node.js এর অভ্যন্তরীণ কাজের জন্য, সাধারণত JavaScript ডেভেলপারদের জানার প্রয়োজন হয় না।


Poll Phase

👉 মূল কাজের ফেইজ। এখানে ইভেন্ট লুপ I/O (file, network) এর জন্য অপেক্ষা করে।

  • নতুন ইভেন্ট থাকলে → callback execute করে
  • ইভেন্ট না থাকলে → check করে callback queue ফাঁকা কি না
    • যদি ফাঁকা হয় → event loop wait করে
    • যদি টাইমার বা সেট ইমিডিয়েট থাকে → পরের ফেইজে চলে যায়

Check Phase

👉 setImmediate() ফাংশনের callback গুলো এখানে এক্সিকিউট হয়।

setImmediate(() => { console.log("SetImmediate callback"); });

Close Callbacks Phase

👉 যখন কোনো socket বা resource বন্ধ হয় (যেমন: socket.destroy()), তার callback গুলো এখানে চলে।


🧠 Extra: Microtasks Queue (Promises, process.nextTick())

  • Microtask queue ইভেন্ট লুপের ফেইজের আগে বা পরে চলে।
  • যেমন:
    • Promise.then()
    • process.nextTick() ← Highest priority

📊 Event Loop Phase (Simplified Flow)

┌───────────────┐ │ timers │ ← setTimeout, setInterval ├───────────────┤ │ pending │ ← OS-level callbacks ├───────────────┤ │ idle, prepare│ ← internal use ├───────────────┤ │ poll │ ← I/O events (file, DB) ├───────────────┤ │ check │ ← setImmediate ├───────────────┤ │ close │ ← socket.close └───────────────┘

👉 প্রতিটি ফেইজের মাঝে Microtask Queue (Promise, nextTick) চেক হয়।


✅ উপসংহার:

  • Event Loop ধাপে ধাপে callback গুলোকে পরিচালনা করে।
  • I/O non-blocking রাখতে এটি গুরুত্বপূর্ণ।
  • Microtask গুলো বেশি প্রাধান্য পায়।
  • এর মাধ্যমে Node.js একটি efficient, responsive সার্ভার হতে পারে—even with single thread.
Last updated on