mi/>

Call Stack ve Event Loop Nedir ?

JavaScript single-thread (tek iş parçacıklı) bir dildir, tek bir call stack olduğundan dolayı aynı anda tek bir iş yapabilir. JavaScript motorları (Chrome V8 gibi) execution context`i yönetmek için Call Stack’i kullanır. Buradaki işlemler LIFO principle (Last In, First Out) yani son giren ilk çıkar stack’de en üstteki çağrı ilk işlenir. Örnek olarak üst üste dizilmiş kutular hayal edelim. En alttakini almamız için tüm kutuları üzerinden almamız gerekiyor. Call Stack de benzer mantıkta çalışır, en alltaki işlemin yapılabilmesi için o iş parçacığının üzerindeki işlemlerin yapılması gerekmektedir.

Event Loop

Call Stack boş olur olmaz, Callback Queue ‘daki çağrıları sırası ile Call Stack’e ekler.

Callback Queue

WEB API’da yapılan işlem tamamlandıktan sonra burada tanımlanır ve Event Loop tarafından Call Stack’e alınana kadar burada bekler.

Memory Heap

“free store” olarak da bilinir, Kod çalışırken oluşturulan değişkenlerin, objelerin, fonksiyonların tutulduğu alandır.

Web API

Web API'ler ise tarayıcıların JavaScript motorları tarafından sağlanan ve JavaScript programları tarafından kullanılan araçlardır. DOM manipülasyonu, ağ istekleri, zamanlama işlemleri gibi işlevleri yerine getirirler. Web API'ler, JavaScript programının çalışmasını kesintiye uğratmadan asenkron işlemleri gerçekleştirmek için kullanılır.

Event Loop ve Web API'ler birlikte çalışarak JavaScript programlarının daha etkili ve performanslı olmasını sağlar. Event Loop, Web API'leri kullanarak JavaScript programlarının işlemlerini sıraya alır (Callback Queue) ve işlenmemiş işlemleri tek tek işler. Bu sayede JavaScript programları, kullanıcının beklemesi olmadan hızlı bir şekilde çalışır.

Örnek bir görsel

event-loop.gif