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:
- Sinxron kod stackda bajariladi.
- Asinxron operatsiyalar (
setTimeout,fetch) Web APIlarga yuboriladi. - Asinxron operatsiya tugagach, uning callbacki callback navbatiga joylashtiriladi.
- Voqealar sikli stack bo'sh bo'lishini kutadi.
- 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.