Takip et

Javascript’te Asenkron Programlama

Javascript’te Asenkron Programlama

Merhaba! Fatih Soysal burada. Bugün Javascript’te asenkron programlamanın inceliklerine dalacağız. Bildiğiniz gibi, Javascript tek iş parçacıklı (single-threaded) bir dildir. Bu, bir seferde sadece bir görev yapabileceği anlamına gelir. Ancak, birçok web uygulaması ağ istekleri, dosya okuma gibi zaman alan işlemler gerektirir. İşte burada asenkron programlama devreye giriyor; uygulamanızın bu işlemler bitene kadar donmasını engelliyor ve diğer görevleri yapmaya devam etmesini sağlıyor.

Callback Fonksiyonları

En eski asenkron programlama yöntemlerinden biri callback fonksiyonlarıdır. Bir fonksiyonun, zaman alan bir işlemin tamamlandığında çalıştırılacak başka bir fonksiyonu parametre olarak alması anlamına gelir. Örneğin, bir ağ isteği gönderdiğinizde, isteğin sonucu callback fonksiyonu içinde işlenir. Ancak, birçok callback fonksiyonunun ard arda kullanılması “callback cehennemi” olarak bilinen bir durum ortaya çıkarır, kodu okumayı ve bakımını zorlaştırır.


function istekYap(url, callback) {
  // Ağ isteği simülasyonu
  setTimeout(() => {
    const veri = { mesaj: "İstek başarılı!" };
    callback(veri);
  }, 2000);
}

istekYap("https://fatihsoysal.com/api", (veri) => {
  console.log(veri); // İsteğin sonucu burada işleniyor
});

Promise’ler

Promise’ler, callback cehennemini önlemek için geliştirilmiştir. Bir Promise, henüz gerçekleşmemiş bir değeri temsil eder. .then() metodu ile başarılı sonuçları, .catch() metodu ile de hataları yakalayabilirsiniz. Promise’ler daha temiz ve okunabilir bir kod yazmanıza yardımcı olur. Dahası, .then() metodlarını zincirleme yoluyla birden fazla asenkron işlemi sıralayabilirsiniz.


function istekYap(url) {
  return new Promise((resolve, reject) => {
    // Ağ isteği simülasyonu
    setTimeout(() => {
      const veri = { mesaj: "Promise ile istek başarılı!" };
      resolve(veri); // Başarılı sonuç
      //reject(new Error("İstek başarısız!")); // Hata durumunda
    }, 2000);
  });
}

istekYap("https://fatihsoysal.com/api")
  .then(veri => console.log(veri))
  .catch(hata => console.error(hata));

Async/Await

Async/Await, Promise’leri kullanarak asenkron kodu daha senkron bir şekilde yazmanıza olanak tanır. async anahtar kelimesi ile bir fonksiyonu asenkron hale getirebilirsiniz ve await anahtar kelimesi ile bir Promise’in çözümlenmesini bekleyebilirsiniz. Bu sayede kodunuz daha okunaklı ve anlaşılır hale gelir. Karmaşık asenkron işlemleri yönetmek için idealdir.


async function istekYapAsync(url) {
  try {
    const veri = await istekYap(url); // Promise'in çözümlenmesini bekler
    console.log(veri);
  } catch (hata) {
    console.error(hata);
  }
}

istekYapAsync("https://fatihsoysal.com/api");

Sonuç olarak, Javascript’te asenkron programlama, performanslı ve ölçeklenebilir web uygulamaları geliştirmek için olmazsa olmazdır. Callback fonksiyonlarından, Promise’lere ve Async/Await’e doğru ilerleyerek kodunuzu daha temiz, okunaklı ve bakımı kolay hale getirebilirsiniz. Daha fazla bilgi için fatihsoysal.com adresini ziyaret edebilirsiniz.

#Etiketler
Javascript, Asenkron Programlama, Callback, Promise, Async Await, Javascript Dersleri, Web Geliştirme


Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.