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.