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:
- timers:
setTimeout()vasetInterval()bilan rejalashtirilgan callbacklarni bajaradi. - pending callbacks: Tizim G/Ç operatsiyalarining callbacklarini bajaradi (masalan, tarmoq xatolari), keyingi Event Loop iteratsiyasiga qadar kechiktiriladi.
- idle, prepare: Event Loop ning ichki bosqichlari.
- poll:
- Qancha vaqt blokirovka qilish va G/Ç operatsiyalarini so‘rashni hisoblaydi.
- G/Ç callbacklar navbatidagi voqealarni, ularning soni belgilangan chegaraga yetganda yoki vaqt tugaganda, ishlaydi.
- check:
setImmediate()bilan rejalashtirilgan callbacklarni bajaradi. - 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.