Event loop tushunchasi
Voqealar sikli nima?
voqea davri Node.js-ni bloklanmaydigan va samarali qiladi.
U tizimga vazifalarni topshirish va ularning natijalarini callback funksiyasilar orqali qayta ishlash orqali asinxron operatsiyalarni boshqaradi, bu Node.js ga minglab bir vaqtning o‘zida ulanishlarni bitta ip bilan boshqarish imkonini beradi.
Voqealar sikli qanday ishlaydi
Node.js operatsiyalarni bajarish uchun quyidagi bosqichlarni bajaradi:
- Asosiy skriptni bajarish (sinxron kod)
- Process any microtasks (Promises, process.nextTick)
- Execute timers (setTimeout, setInterval)
- Run I/O callbacks (file system, network operations)
- Immediate callback funksiyasilar to‘plami
- Yaqin voqealarni boshqarish (masalan, socket.on('close'))
Misol: Hodisa sikli tartibi
console.log('First');
setTimeout(() => console.log('Third'), 0);
Promise.resolve().then(() => console.log('Second'));
console.log('Fourth');
O‘zingiz sinab ko‘ring »
Bu bajarilish tartibini ko‘rsatadi:
- Sinxronizatsiya kodi birinchi bo‘lib ishlaydi ("Birinchi", "To‘rtinchi")
- Mikrovazifalar (Promiselar) keyingi bosqichdan oldin bajariladi ("Ikkinchi")
- Taymerlar oxirgi marta bajariladi ("Uchinchi")
Hodisa siklining bosqichlari
Voqealar sikli ushbu tartibda har xil turdagi callback funksiyasilarni qayta ishlaydi:
- Taymerlar:
setTimeout,setInterval - I/U callback funksiyasilari: Tugallangan kiritish/chiqarish operatsiyalari
- So‘rovnoma: Yangi kiritish-chiqarish hodisalarini oling
- Tekshirish:
setImmediatecallback funksiyasilar - Yopish: Callback-larni tozalash (masalan,
socket.on('close'))
Eslatma: Har bir bosqich o‘rtasida Node.js mikrotopshiriqlar (va’dalar) va process.nextTick Callback-larni amalga oshiradi.
Misol: Hodisa siklining bosqichlari
console.log('1. Start');
// Next tick queue
process.nextTick(() => console.log('2. Next tick'));
// Microtask queue (Promise)
Promise.resolve().then(() => console.log('3. Promise'));
// Timer phase
setTimeout(() => console.log('4. Timeout'), 0);
// Check phase
setImmediate(() => console.log('5. Immediate'));
console.log('6. End');
O‘zingiz sinab ko‘ring »
Chiqish quyidagicha bo‘ladi:
1. Start 6. End 2. Next tick 3. Promise 4. Timeout 5. Immediate
Bu ustuvorlik tartibini ko‘rsatadi: sinxronlash kodi > NextTick > Promiselar > Taymerlar > Tekshirish bosqichi.
Voqealar sikli nima uchun muhim?
Voqealar sikli Node.js-ga minglab bir vaqtning o‘zida bir vaqtning o‘zida ulanishlarni bitta ip bilan boshqarish imkonini beradi, bu esa uni quyidagilar uchun mukammal qiladi:
- Haqiqiy vaqtda ilovalar
- API va mikroservislar
- Ma’lumotlar oqimi
- Chat ilovalari
Xulosa
- Node.js asinxron operatsiyalarni boshqarish uchun voqea siklidan foydalanadi
- Callback-larning har xil turlari har xil ustuvorliklarga ega
- Mikrovazifalar (Promise’lar) event loop’ning keyingi bosqichidan oldin bajariladi
- Ushbu bloklanmagan model yuqori parallellikni ta’minlaydi
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
