Sobes.tech
Middle

Voqealar aylanishi (event loop) haqida gapir.

sobes.tech AI

AIdan javob

Voqealar sikli JavaScriptda asinxron ishning asosidir. U kodning bajarilishini, voqealarni boshqarishni va tashqi dunyo bilan o'zaro ta'sirni nazorat qiladi.

Asosiy komponentlar:

  • Heap (Heap): Ob'ektlarni ajratish uchun xotira maydoni.
  • Stack (Stack): Funktsiyalarning bajarilish kontekstlari saqlanadigan joy. Funktsiya chaqirilganda, u stackga joylashtiriladi, va tugagach, olib tashlanadi.
  • Web APIlar: Brauzer tomonidan taqdim etilgan interfeyslar (DOM, AJAX, Timers va boshqalar). Ular asinxron operatsiyalarni boshqaradilar.
  • Callback Queue (Callback navbati): Voqealar bilan bog'liq xabarlar navbati. Web APIlar bu yerga tugagan asinxron operatsiyalarning callbacklarini joylashtiradilar.
  • Voqealar sikli (Event Loop): Doim stack va callback navbatini nazorat qiladi. Agar stack bo'sh bo'lsa, u birinchi callbackni oladi va uni bajarish uchun stackga joylashtiradi.

Jarayon:

  1. Sinxron kod stackda bajariladi.
  2. Asinxron operatsiyalar (setTimeout, fetch) Web APIlarga yuboriladi.
  3. Asinxron operatsiya tugagach, uning callbacki callback navbatiga joylashtiriladi.
  4. Voqealar sikli stack bo'sh bo'lishini kutadi.
  5. Stack bo'sh bo'lsa, voqealar sikli callback navbatidan birinchi callbackni oladi va uni stackga joylashtiradi, u yerda bajariladi.

Misol bilan setTimeout:

console.log('Boshlanish');

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

console.log('Tugash');

Natija:

Boshlanish
Tugash
setTimeout ichida

0 ms'lik timeoutga qaramay, setTimeout callbacki sinxron koddan keyin bajariladi, chunki u navbatga tushadi va stack tozalashini kutadi.

Node.jsda ham voqealar sikli mavjud, ammo ularning fazalarida ba'zi farqlar bor.