Event Loop’u Basitçe Anlamak
Merhaba! Ben Fatih Soysal ve bugün size JavaScript’in en önemli kavramlarından biri olan Event Loop’u, karmaşık detaylara girmeden basitçe anlatacağım. Öncelikle, Event Loop’un ne olduğunu anlamak için, JavaScript’in tek iş parçacıklı (single-threaded) bir dil olduğunu bilmeniz gerekiyor. Yani, bir anda sadece bir görevi yerine getirebiliyor. Peki, birden fazla görevi nasıl yönetiyor? İşte burada Event Loop devreye giriyor.
Düşünün ki, bir aşçı ve siparişler var. Aşçı (JavaScript) her siparişi (görev) sırayla hazırlıyor. Ancak bazı siparişler uzun sürebilir (örneğin, bir pizza pişirmek). Bu durumda aşçı, o pizza pişirirken diğer siparişleri de hazırlayabiliyor. Event Loop da tıpkı bu aşçı gibi çalışıyor.
JavaScript, uzun süren işlemler için (örneğin, ağ isteği yapmak) birden fazla görev aynı anda çalıştırılabilmesi için “asenkron” işlemler kullanır. Bu uzun süren işlemler, ana iş parçacığını engellemeden arka planda işlenir. Event Loop ise sürekli olarak “görev kuyruğunu” (call stack) kontrol eder. Bu kuyruk, tamamlanan asenkron işlemleri içerir. Bir asenkron işlem tamamlandığında, Event Loop bu işlemin sonucunu ana iş parçacığına iletir ve ilgili fonksiyonu çalıştırır (callback fonksiyonu). Sonuç olarak, tek bir iş parçacığı ile, birden fazla görevi yönetebiliyor, ve kullanıcı arayüzü donmadan devam ediyor.
Event Loop’un Bileşenleri
Event Loop’un temel bileşenlerini daha ayrıntılı inceleyelim. Öncelikle, “call stack” var; burası, şu anda çalışan fonksiyonların yer aldığı bir yığıt. Ardından, “callback queue” veya “task queue” var; burası, tamamlanmayı bekleyen asenkron işlemlerin sıraya alındığı bir kuyruktur. Ve son olarak, Event Loop sürekli olarak bu kuyruğu kontrol eder ve hazır olan görevleri call stack’e ekler.
Event Loop Örneği
console.log('Başlangıç');
setTimeout(() => {
console.log('Timeout fonksiyonu');
}, 0);
console.log('Bitiş');
Bu örnekte, önce “Başlangıç” yazdırılır. Sonra, setTimeout fonksiyonu 0 milisaniyelik bir gecikmeyle çağrılır. Ancak bu, hemen çalışmaz. Çünkü asenkron bir işlemdir. Daha sonra, “Bitiş” yazdırılır. 0 milisaniyelik gecikme sonunda, setTimeout fonksiyonu callback kuyruğuna eklenir. Event Loop, call stack boşaldığında, bu kuyruktan setTimeout fonksiyonunu alır ve çalıştırır. Sonuç olarak, çıktı şu şekilde olur:
Başlangıç
Bitiş
Timeout fonksiyonu
Bu basit örnek, Event Loop’un nasıl çalıştığını gösteriyor. Daha karmaşık uygulamalarda, birçok asenkron işlem ve callback fonksiyonu ile çalışır. Ancak temel prensip aynı kalır.
Neden Event Loop Önemli?
Event Loop, JavaScript’in performansını ve uygulamaların tepkiselliğini (responsiveness) sağlamak için kritik bir öneme sahiptir. Asenkron işlemler sayesinde, uzun süren görevler ana iş parçacığını engellemez. Bu sayede, uygulamanız donmadan, kullanıcı etkileşimlerine hızlı bir şekilde yanıt verebilir. Web uygulamalarında, kullanıcı arayüzünün her zaman tepkisel kalması çok önemlidir, ve Event Loop bu konuda kritik bir rol oynar.
Umarım bu makale, Event Loop’u daha iyi anlamanıza yardımcı olmuştur. Daha fazla bilgi için web sitemi ziyaret edebilirsiniz. Ayrıca, konu hakkında daha detaylı bilgi edinmek için MDN Web Docs kaynağını da inceleyebilirsiniz.
#Etiketler
#EventLoop #JavaScript #AsenkronProgramlama #Callback #Promise #AsyncAwait #WebGeliştirme #Performans #Tepkisellik #FatihSoysal
