Sobes.tech
Middle+

Node.js'da voqealar sikli (Event Loop) qanday ishlaydi?

sobes.tech AI

AIdan javob

Event Loop — bu mexanizm bo Node.js ga bloklamaydigan G/Ç operatsiyalarini bajarishga imkon beradi, JavaScript esa yagona ipli til bo‘lsa ham. Event Loop doimiy ravishda chaqiriqlar stekini, callbacklar navbatini va turli xil voqealar navbatlarini (timers, I/O) nazorat qiladi.

Event Loop ning asosiy bosqichlari:

  1. timers: setTimeout() va setInterval() bilan rejalashtirilgan callbacklarni bajaradi.
  2. pending callbacks: Tizim G/Ç operatsiyalarining callbacklarini bajaradi (masalan, tarmoq xatolari), keyingi Event Loop iteratsiyasiga qadar kechiktiriladi.
  3. idle, prepare: Event Loop ning ichki bosqichlari.
  4. poll:
    • Qancha vaqt blokirovka qilish va G/Ç operatsiyalarini so‘rashni hisoblaydi.
    • G/Ç callbacklar navbatidagi voqealarni, ularning soni belgilangan chegaraga yetganda yoki vaqt tugaganda, ishlaydi.
  5. check: setImmediate() bilan rejalashtirilgan callbacklarni bajaradi.
  6. close callbacks: Yopilish callbacklarini bajaradi, masalan, socket.destroy().

process.nextTick() va mikro vazifalar (promislar, queueMicrotask()) o‘rtasida va keyingi bosqichga o‘tish yoki joriy bosqichni yakunlashdan oldin bajariladi. process.nextTick() mikro vazifalarga nisbatan yuqori ustuvorlikka ega.

// Vazifa rejalashtirish misollari
console.log('Boshlanish');

setTimeout(() => {
  console.log('Timer 0');
}, 0);

setImmediate(() => {
  console.log('setImmediate');
});

process.nextTick(() => {
  console.log('nextTick');
});

Promise.resolve().then(() => {
  console.log('Promise');
});

console.log('Yakuni');

// Tipik bajarilish tartibi (Node.js versiyasi va yuklamaga qarab o‘zgarishi mumkin):
// Boshlanish
// Yakuni
// nextTick
// Promise
// Timer 0  (timers bosqichida bajariladi)
// setImmediate (check bosqichida bajariladi)

Event Loop Node.js ga ko‘p parallel so‘rovlarni samarali tarzda ishlash imkonini beradi, har biri uchun alohida ip yaratmasdan, bu yuqori unumdorlikni ta’minlaydi.