Event Loop nima?

MiddleJavaScript #javascript #async

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?