1. `await` Kullanmayı Unutmak
Bu hata, özellikle yeni başlayan geliştiriciler için oldukça yaygındır. Bir `async` fonksiyonu içinde bir promise beklemek için `await` kullanmak gereklidir. Eğer `await` kullanmazsanız, promise'in çözülmesini beklemeden diğer kod çalıştırılmaya devam eder. Bu da genellikle beklenmeyen sonuçlara yol açar.
async function fetchData() {
let response = await fetch('https://api.example.com/data'); // await ekledik
let data = await response.json(); // await ekledik
console.log(data);
}2. `await` ile Hata Yakalama (Error Handling) Unutulması
Asenkron işlemler, hata ile karşılaşma olasılığını artırır. Eğer bir `async` fonksiyonu içinde bir hata meydana gelirse, bu hata yakalanmazsa, uygulama beklenmedik şekilde çalışmayı durdurabilir.
async function fetchData() {
try {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
} catch (error) {
console.error("Bir hata oluştu:", error);
}
}3. `await` ile `Promise.all` Kullanımının İhmal Edilmesi
Birden fazla asenkron işlemi paralel olarak gerçekleştirmek bazen gereklidir. Ancak her bir `await` ifadesini sırayla kullanmak, işlem süresinin artmasına yol açar. Bu, performans sorunlarına neden olabilir.
async function fetchMultipleData() {
let data1 = fetch('https://api.example.com/data1');
let data2 = fetch('https://api.example.com/data2');
let data3 = fetch('https://api.example.com/data3');
let [result1, result2, result3] = await Promise.all([data1, data2, data3]);
console.log(result1, result2, result3);
}4. `async` Fonksiyonu İçinde `return` Değeri Unutmak
Bir `async` fonksiyonu, her zaman bir promise döndürür. Eğer `async` fonksiyonunun sonunda `return` ifadesini unutursanız, beklenen değeri alamazsınız.
async function fetchData() {
let response = await fetch('https://api.example.com/data');
return response.json(); // return ekledik
}5. `await` Kullanırken Asenkron Fonksiyonun Zamanlamasını Göz Ardı Etmek
Birçok geliştirici, `await` kullanarak işlemleri sırayla beklerken, zamanlamayı yönetmekte zorlanabilir. Ancak bazen işlemlerin sıralı olması gerekmez ve bu, performansı artırabilir.
6. Sonsuz Döngü Oluşması
Bir `async` fonksiyonunun içinde yanlışlıkla sonsuz bir döngü yaratmak da çok yaygın bir hatadır. Özellikle yanlış bir `await` kullanımı veya döngü yapısının yanlış kurgulanması bu tür hatalara yol açabilir.
async function fetchData() {
let count = 0;
while (count < 5) {
await new Promise(resolve => setTimeout(resolve, 1000)); // 1 saniye bekle
console.log("Veri alınıyor...");
count++;
}
}7. Yanlış `await` Yerine `then()` Kullanmak
`async/await` kullanımının avantajlarından biri, kodun daha temiz ve okunabilir olmasını sağlamasıdır. Ancak bazen eski alışkanlıklarla `then()` yöntemini kullanmaya devam edebiliriz. Bu, özellikle karmaşık uygulamalarda kodun anlaşılırlığını azaltabilir.
async function fetchData() {
try {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
} catch (error) {
console.error("Bir hata oluştu:", error);
}
}### Sonuç
`async` ve `await` JavaScript’in en güçlü araçlarından biri olsa da, doğru kullanmak bazen zor olabilir. Yukarıda bahsettiğimiz yaygın hataları öğrenmek, geliştirdiğiniz projelerde daha etkili ve hatasız bir kod yazmanıza yardımcı olacaktır. Unutmayın, hatalar her zaman olacaktır, ancak onları çözmek ve ders çıkarmak, bir geliştirici olarak büyümenin en önemli adımlarından biridir.