𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀, 𝗧𝗵𝗿𝗲𝗮𝗱𝘀, 𝗮𝗻𝗱 𝗔𝘀𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀 𝗘𝘅𝗲𝗰𝘂𝘁𝗶𝗼𝗻 -> JavaScript Fonksiyonları, Thread'ler ve Asenkron Çalıştırma
JavaScript'in arka planda nasıl çalıştığını anlamanız gerekir.
İşte fonksiyonların, süreçlerin (processes), thread'lerin ve çalıştırma stillerinin bir dökümü.
𝗞𝗶𝗻𝗱𝘀 𝗼𝗳 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 -> JavaScript Fonksiyon Türleri
- İsimlendirilmiş Fonksiyon (Named Function): Belirli bir isim kullanır. Bu, hata ayıklamayı (debugging) kolaylaştırır.
- Anonim Fonksiyon (Anonymous Function): İsmi yoktur. Bunları genellikle callback olarak kullanırsınız.
- Fonksiyon İfadesi (Function Expression): Bir fonksiyonu bir değişkene atarsınız.
- Ok Fonksiyonu (Arrow Function): => sembolünü kullanan daha kısa bir sözdizimidir.
- IIFE: Anında Çağrılan Fonksiyon İfadesi (Immediately Invoked Function Expression). Tanımlandığı anda çalışır.
𝗣𝗿𝗼𝗰𝗲𝘀𝘀 𝘃𝘀. 𝗧𝗵𝗿𝗲𝗮𝗱 -> Process (Süreç) vs. Thread (İş Parçacığı)
Bir Process, bilgisayarınızda çalışan bir programdır.
- Her process'in kendi belleği vardır.
- Bir process çökerse, diğerleri çalışmaya devam eder.
- Örnek: Chrome ve Spotify ayrı process'lerdir.
Bir Thread, bir process içindeki küçük bir birimdir.
- Thread'ler aynı belleği paylaşır.
- Tek bir programın aynı anda birçok iş yapmasına olanak tanırlar.
- Örnek: Chrome içinde bir thread bir sayfayı oluştururken (render ederken), diğeri fare tıklamalarınızı yönetir.
𝗦𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀 𝘃𝘀. 𝗔𝘀𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀 -> Senkron (Synchronous) vs. Asenkron (Asynchronous)
JavaScript tek thread'li (single-threaded) bir yapıya sahiptir. Bir çağrı yığını (call stack) kullanarak her seferinde tek bir görevi işler.
Senkron Çalıştırma (Synchronous Execution):
- Görevler birbiri ardına çalışır.
- Her görev, bir öncekinin bitmesini bekler.
- Yavaş görevler kodunuzun çalışmasını engeller (block eder).
Asenkron Çalıştırma (Asynchronous Execution):
- Görevler arka planda çalışır.
- Bir görevin bitmesini beklerken kod durmaz.
- Bu işlem Web API'leri, bir Callback Kuyruğu (Callback Queue) ve bir Event Loop kullanır.
Asenkron çalışma mantığı:
- JavaScript bir görevi (bir zamanlayıcı gibi) bir Web API'sine gönderir.
- Ana kod çalışmaya devam eder.
- Görev tamamlandığında Callback Kuyruğuna taşınır.
- Event Loop, yığın (stack) boş olduğunda onu Call Stack'e taşır.
Bu, web uygulamalarınızın hızlı ve duyarlı (responsive) kalmasını sağlar.