Sobes.tech
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:

  1. Senkron kod yığında yürütülür.
  2. Asenkron işlemler (setTimeout, fetch gibi) Web API'lerine gönderilir.
  3. Asenkron işlem tamamlandığında, callback'i callback kuyruğuna konur.
  4. Olay döngüsü, yığın boşalana kadar bekler.
  5. 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.