JavaScript'te async/await

async ve await, JavaScript'te asenkron işlemleri (async operations) yönetmek için kullanılan bir yapıdır. Bu yapı, Promise'lerle (özyinelemeli fonksiyonlar) çalışır ve kodun okunabilirliğini artırır, karmaşık asenkron işlemleri daha kolay yönetilebilir hale getirir.

async Fonksiyonlar

async anahtar kelimesi, bir fonksiyonun asenkron olarak çalıştığını belirtmek için kullanılır. Bir fonksiyon async olarak tanımlanırsa, bu fonksiyon bir Promise objesi döner.

Örnek:

async function getData() {
  return "Veriler alındı!";
}

getData().then(data => {
  console.log(data);
});

await Operatörü

await operatörü, async fonksiyonlar içinde kullanılan ve bir Promise'in sonuçlanmasını bekleyen bir operatördür. await anahtar kelimesi, Promise'in çözülmesini beklerken fonksiyonun duraklamasını sağlar.

Örnek:

async function getData() {
  let promise = new Promise((resolve, reject) => {
    setTimeout(() => resolve("Veriler alındı!"), 2000);
  });

  let result = await promise; // promise çözülene kadar bekler
  console.log(result); // Veriler alındı!
}

getData();

async/await ile Error Handling

try...catch blokları, async/await kullanırken hata yönetimi için kullanılır. Bir await ifadesinin içinde bir hata oluşursa, catch bloğundaki hata yakalama mekanizması çalışır.

Örnek:

async function fetchData() {
  try {
    let response = await fetch('https://example.com/data');
    let data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Hata oluştu:', error);
  }
}

fetchData();

async/await ile Paralel İşlemler

await operatörü, asenkron işlemleri sırasıyla çalıştırmamıza veya paralel olarak çalıştırmamıza olanak tanır. Birden çok await ifadesi kullanarak, farklı işlemlerin tamamlanmasını bekleyebilir ve sonuçlarını kullanabiliriz.

Örnek:

async function getMultipleData() {
  let promise1 = fetch('https://example.com/data1');
  let promise2 = fetch('https://example.com/data2');
  
  let [response1, response2] = await Promise.all([promise1, promise2]);
  
  let data1 = await response1.json();
  let data2 = await response2.json();
  
  console.log(data1, data2);
}

getMultipleData();

Sonuç

async ve await, JavaScript'te asenkron programlama yaparken daha okunaklı ve yönetilebilir kodlar yazmamıza olanak tanır. Bu yapılar, Promise temelli işlemleri kolayca yönetebilmemizi sağlar ve hata yönetimi için try...catch bloklarıyla birlikte kullanılabilir.