Event Loop nima?
Savol
JavaScript'da Event Loop nima?
Qisqa javob
Event Loop — bu bir oqimli (single-threaded) bajarilish modeliga qaramay, JavaScript'ga asinxron amallarni bajarish imkonini beradigan mexanizm.
Batafsil javob
JavaScript kodni Call Stack (chaqiruvlar steki) yordamida bitta oqimda bajaradi. Asinxron amal (setTimeout, tarmoq so'rovi, promise) uchraganda, u muhitga (brauzer yoki Node.js) uzatiladi, stek esa sinxron kodni bajarishda davom etadi.
Asinxron amal tugaganda, uning callback'i navbatga qo'yiladi:
- Microtask Queue — promise'lar uchun (
.then,queueMicrotask), joriy sinxron vazifadan so'ng darhol, keyingi render'gacha bajariladi. - Macrotask Queue (Task Queue) —
setTimeout,setInterval, DOM hodisalari uchun.
Event Loop doimiy ravishda tekshiradi: Call Stack bo'sh yoki yo'q? Agar bo'sh bo'lsa — avval barcha mikrovazifalarni bajaradi, keyin navbatdan bitta makrovazifani oladi.
Misol
console.log('1')
setTimeout(() => {
console.log('2')
}, 0)
console.log('3')
Natija:
1
3
2
0 kechikish bilan setTimeout baribir butun sinxron koddan keyin bajariladi, chunki u darhol bajarilmasdan, makrovazifalar navbatiga tushadi.
Qo'shimcha savollar
- Call Stack nima?
- Task Queue nima?
- Microtask Queue Macrotask Queue'dan nimasi bilan farq qiladi?