JavaScript Olay Döngüsü: Engellemeyen Asenkron Yürütme

JavaScript olay döngüsü, çağrı yığını boş olduğunda bir kuyruktan geri çağırmaları çalıştırarak asenkron işlemleri yönetir ve iş parçacığı engellemesini önler.

Loop. Control structure repeating code until condition is met. Generated ELI5 content

        graph LR
  Center["JavaScript Olay Döngüsü: Engellemeyen Asenkron Yürütme"]:::main
  Pre_variable["variable"]:::pre --> Center
  click Pre_variable "/terms/variable"
  Rel_iteration["iteration"]:::related -.-> Center
  click Rel_iteration "/terms/iteration"
  Rel_recursion["recursion"]:::related -.-> Center
  click Rel_recursion "/terms/recursion"
  Rel_closed_loop_life_support["closed-loop-life-support"]:::related -.-> Center
  click Rel_closed_loop_life_support "/terms/closed-loop-life-support"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 5 yaşındaki gibi açıkla

[JavaScript](/tr/terms/javascript)'i aynı anda yalnızca bir iş yapabilen bir şef gibi düşünün. Bir pasta pişirmesi gerekiyorsa (uzun bir görev), sadece orada durup beklemez. Pastayı fırına koyar ve bir zamanlayıcı ayarlar, sonra hemen bir salata hazırlamaya başlar (başka bir görev). Fırın zamanlayıcısı çaldığında, şef salatayı bitirir, pastayı çıkarır ve sonra başka bir işe geçer. Olay döngüsü, şefin bu 'bekleyen' görevleri yönetme sistemi gibidir, diğer işleri durdurmadan hazır olduklarında halledilmelerini sağlar.

🤓 Expert Deep Dive

JavaScript olay döngüsü, kod, görev ve olayların yürütülmesini düzenleyen bir eşzamanlılık modelidir. Çağrı yığınını ve görev kuyruğunu (veya kuyruklarını) sürekli olarak izler. Senkron kod doğrudan çağrı yığınında yürütülür. Asenkron işlemler (örneğin, setTimeout, Promises, I/O) yürütmelerini yöneten ana bilgisayar ortamının API'lerine devredilir. Bir asenkron işlem tamamlandığında, geri çağırma fonksiyonu (veya bir Promise'in çözümleyicisi) ilgili bir kuyruğa yerleştirilir: görev kuyruğu (setTimeout, DOM olayları gibi makro görevler için) veya mikro görev kuyruğu (Promises, queueMicrotask gibi mikro görevler için). Olay döngüsünün temel işlevi, çağrı yığını boş olduğunda görevleri kuyruktan çıkarmak ve yürütmektir. Mikro görevler genellikle makro görevlerden önce işlenir. Özellikle, mevcut makro görev tamamlandıktan sonra ve bir sonraki makro görev başlamadan önce, olay döngüsü mevcut tüm mikro görevleri yürütecektir. Bu, gecikmiş olanlara göre anında geri çağırmaları (Promise çözümleri gibi) önceliklendirerek, farklı JavaScript ortamlarında yanıt verme yeteneğini ve asenkron işlemlerin verimli bir şekilde işlenmesini sağlar.

🔗 İlgili terimler

Ön koşullar:

📚 Kaynaklar