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.