Sobes.tech
Middle

JavaScript'te asenkronluğun prensipleri hakkında bana anlat.

sobes.tech yapay zeka

AI'dan gelen yanıt

JavaScript'teki asenkronluk ilkeleri, ana yürütme modeli üzerine kuruludur; burada, zaman alabilecek görevler (örneğin, ağ istekleri, zamanlayıcılar) ana yürütme akışını engellemez, böylece diğer işlemler gerçekleştirilebilir. Bu, şu yollarla sağlanır:

  • Event Loop (Olay Döngüsü): Sürekli mesaj kuyruğunu kontrol eden ve içinden görevleri yürüten mekanizma. Asenkron bir işlem tamamlandığında, onun callback'i görev kuyruğuna eklenir.
  • Callback Fonksiyonlar: Bir başka fonksiyona argüman olarak geçirilen ve asenkron işlemin tamamlanmasından sonra çalışan fonksiyonlar.
  • Promises (Sözler): Asenkron bir işlemin nihai değerini temsil eden nesneler; ya başarılı (resolved) ya da reddedilmiş (rejected) olabilirler. Asenkron kodla çalışmayı kolaylaştırır, "callback hell"'den kaçınmayı sağlar.
  • Async/Await: Promises üzerinde sözdizimi şekerleri; daha okunabilir ve senkron tarzda asenkron kod yazmaya olanak tanır. async ile işaretlenmiş fonksiyonlar her zaman bir Promise döner. await operatörü yalnızca async fonksiyonlar içinde kullanılabilir ve Promise çözülene kadar yürütmeyi duraklatır.

Yaklaşımların karşılaştırması:

Yaklaşım Okunabilirlik Hata İşleme Paralel Çalışma
Callbacks Düşük Karmaşık Trivial olmayan olabilir
Promises Orta Kullanışlı .all(), .race()
Async/Await Yüksek Kullanışlı (try/catch) Biraz daha karmaşık hale gelir

Promises kullanımı örneği:

fetch('/api/data') // Asenkron işlem
  .then(response => response.json()) // Başarılı işlem
  .then(data => console.log(data)) // Veri işleme
  .catch(error => console.error('Hata:', error)); // Hata işleme

Async/Await kullanımı örneği:

async function fetchData() {
  try {
    const response = await fetch('/api/data'); // Promise bekleniyor
    const data = await response.json(); // Promise bekleniyor
    console.log(data);
  } catch (error) {
    console.error('Hata:', error); // Hata işleme
  }
}
fetchData();