Sobes.tech
Junior

Asenkronluk nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

JavaScript bağlamında asenkronluk, programın ana yürütme akışını engellemeden görevleri yerine getirme yeteneğidir. Bu, uygulamanın, örneğin, ağ istekleri veya giriş/çıkış işlemleri sırasında yanıt verebilir kalmasını sağlar.

Ana kavramlar ve mekanizmalar:

  • Event Loop: JavaScript'teki asenkronitenin kalbidir. Sürekli olarak mesaj kuyruğunu (Message Queue) kontrol eder ve çağrı yığını (Call Stack) boşsa, görevleri kuyruğdan yığına taşır.

  • Callback Fonksiyonları: Diğer fonksiyonlara argüman olarak geçirilen ve asenkron bir işlemin tamamlanmasının ardından çağrılan fonksiyonlar.

  • Promises: Bir asenkron işlemin sonlanmasını (veya başarısızlığını) ve sonucunu temsil eden nesne. Daha okunabilir asenkron kodlar yazmaya olanak tanır, "callback hell"'den kaçınır.

    // Promise örneği
    const myPromise = new Promise((resolve, reject) => {
      setTimeout(() => {
        resolve("İşlem başarıyla tamamlandı!");
      }, 1000);
    });
    
    myPromise
      .then(result => {
        console.log(result); // 1 saniye sonra gösterilir
      })
      .catch(error => {
        console.error(error);
      });
    
  • Async/Await: Promises üzerinde sözdizimi şekeridir, asenkron kodu senkron gibi yapar, okunabilirliği artırır ve hata yönetimini kolaylaştırır.

    // async/await ile örnek
    async function fetchData() {
      try {
        const response = await fetch('https://api.example.com/data');
        const data = await response.json();
        console.log(data);
      } catch (error) {
        console.error('Veri alınırken hata:', error);
      }
    }
    
    fetchData();
    

Mekanizmaların karşılaştırması:

Mekanizma Açıklama Avantajlar Dezavantajlar
Callback Fonksiyonları Asenkron görevin tamamlanmasının ardından çağrılan fonksiyonlar. Basit ve temel mekanizma. "Callback hell" oluşabilir.
Promises Asenkron işlemin sonucunu temsil eden nesne. Daha iyi okunabilirlik, hata yönetimi. Zincirlerde hâlâ karmaşık olabilir.
Async/Await Promises üzerinde sözdizimi şekeridir. Kodu lineer ve anlaşılır yapar. En yüksek okunabilirlik, hata ayıklama kolaylığı. Promises gerektirir.

Asenkronluk, modern ve duyarlı web uygulamaları oluşturmak için kritik öneme sahiptir, API istekleri gibi uzun süren işlemleri kullanıcı arayüzünü engellemeden gerçekleştirmeye olanak tanır.