Middle
Hadisə döngüsü (event loop) haqqında danış.
sobes.tech Süni İntellekt
AI-dan cavab
Hadisələr dövrü JavaScript-də asinxron işin əsasını təşkil edir. O, kodun icrasını, hadisələrin idarə olunmasını və xarici dünya ilə qarşılıqlı əlaqəni idarə edir.
Əsas komponentlər:
- Heap (Heap): Obiektlərin ayrılması üçün yaddaş sahəsi.
- Stack (Yığın): Funksiyaların icra kontekstlərinin saxlandığı yer. Funksiya çağırıldıqda, o yığına yerləşdirilir və tamamlandıqda silinir.
- Web API-lər: Brauzer tərəfindən təmin olunan interfeyslər (DOM, AJAX, Timers və s.). Onlar asinxron əməliyyatları idarə edir.
- Callback Queue (Callback Növbəsi): Hadisələrlə əlaqəli mesajların növbəsi. Web API-lər burada tamamlanan asinxron əməliyyatların callback-lərini yerləşdirir.
- Hadisələr dövrü (Event Loop): Daim yığını və callback növbəsini izləyir. Əgər yığın boşdursa, ilk callback-i götürür və icra üçün yığına yerləşdirir.
Proses:
- Sinxron kod yığında icra olunur.
- Asinxron əməliyyatlar (
setTimeout,fetch) Web API-lərə göndərilir. - Asinxron əməliyyat tamamlandıqda, onun callback-i callback növbəsinə yerləşdirilir.
- Hadisələr dövrü yığının boşalmasını gözləyir.
- Yığın boş olduqda, hadisələr dövrü ilk callback-i götürür və yığına yerləşdirir, burada icra olunur.
setTimeout ilə nümunə:
console.log('Başlanğıc');
setTimeout(() => {
console.log('setTimeout daxilində');
}, 0);
console.log('Son');
Nəticə:
Başlanğıc
Son
setTimeout daxilində
0 ms-lik vaxt aşımı olsa da, setTimeout callback-i sinxron koddan sonra icra olunur, çünki o növbəyə daxil olur və yığının boşalmasını gözləyir.
Node.js-də də hadisələr dövrü mövcuddur, lakin bəzi fərqlərlə.