Middle
Olay döngüsünden (event loop) bahset.
sobes.tech yapay zeka
AI'dan gelen yanıt
O döngü olayları, JavaScript'te asenkron çalışmanın temelidir. Kodun yürütülmesini, olayların işlenmesini ve dış dünya ile etkileşimi yönetir.
Ana bileşenler:
- Heap (Yığın): Nesnelerin tahsis edildiği bellek alanı.
- Stack (Yığın): Fonksiyonların yürütme bağlamlarının saklandığı yer. Bir fonksiyon çağrıldığında yığına eklenir, tamamlandığında kaldırılır.
- Web API'leri: Tarayıcı tarafından sağlanan arayüzler (DOM, AJAX, Timers vb.). Asenkron işlemleri işlerler.
- Callback Kuyruğu: Olaylarla ilişkili mesajların kuyrukları. Web API'leri tamamlanan asenkron işlemlerin callback'lerini buraya koyar.
- Olay Döngüsü: Sürekli olarak yığını ve callback kuyruğunu izler. Yığın boşsa, ilk callback'i alır ve yürütmek üzere yığına koyar.
İşlem:
- Senkron kod yığında yürütülür.
- Asenkron işlemler (
setTimeout,fetchgibi) Web API'lerine gönderilir. - Asenkron işlem tamamlandığında, callback'i callback kuyruğuna konur.
- Olay döngüsü, yığın boşalana kadar bekler.
- Yığın boşsa, olay döngüsü ilk callback'i kuyruktan alır ve yığına koyar, burada yürütülür.
setTimeout ile örnek:
console.log('Başlangıç');
setTimeout(() => {
console.log('setTimeout içinde');
}, 0);
console.log('Bitiş');
Çıktı:
Başlangıç
Bitiş
setTimeout içinde
0 ms'lik zaman aşamasına rağmen, setTimeout callback'i, senkron koddan sonra yürütülür çünkü kuyrukta bekler ve yığının boşalmasını sağlar.
Node.js'te de bir olay döngüsü vardır, ancak kuyrukların işlenme aşamalarında bazı farklar bulunur.