1. Unutulan `await` Keyword'ü
Çözüm: Her asenkron fonksiyonu çağırırken `await` keyword’ünü kullandığınızdan emin olun.
async function fetchData() {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
}
2. `await` Kullanımı İçin Yanlış Türde Veri
Çözüm: `await` sadece `Promise` döndüren fonksiyonlarla kullanılır. Değeri kontrol etmek ve doğru türde olduğundan emin olmak gerekir.
async function example() {
let result = await 42; // Bu doğru değil
console.log(result); // Hatalı kullanım
}
3. `try/catch` Bloklarının Eksikliği
Çözüm: Her `await` ifadesini bir `try/catch` bloğuyla sarmak, hataların düzgün bir şekilde yönetilmesini sağlar.
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("Hata oluştu:", error);
}
}
4. Zincirleme `await` Kullanımı
Çözüm: Birden fazla asenkron işlemi paralel olarak çalıştırmak için `Promise.all()` kullanabilirsiniz.
async function loadData() {
let [user, posts] = await Promise.all([
fetch('https://api.example.com/user'),
fetch('https://api.example.com/posts')
]);
console.log(user, posts);
}
5. Yanıtı Beklemeden Fonksiyonun Bitmesi
Çözüm: Her zaman `await` ile işlemlerin sırasını kontrol edin.
async function fetchData() {
let data = await fetch('https://api.example.com/data');
console.log(data); // Data burada gerçekten geldi mi?
}
6. Birden Fazla `async` Kullanımı
Çözüm: Sadece gerektiğinde `async` kullanın. Fonksiyonlarınızı daha basit ve anlaşılır tutun.
7. Geri Döndürülen Promiselerin Yanlış Kullanımı
Çözüm: `async` fonksiyonlarının otomatik olarak `Promise` döndüğünü unutmamalısınız. Bu, geri dönen değeri doğru şekilde ele almanızı sağlar.
async function getData() {
return "Veri"; // Bu aslında Promise.resolve("Veri")'dir.
}
8. Yanıtların İstenilen Formatlarda Olmaması
Çözüm: Dönen veriyi kontrol edin ve doğru formatta olduğundan emin olun.
async function fetchData() {
let response = await fetch('https://api.example.com/data');
if (response.ok) {
let data = await response.json();
console.log(data);
} else {
console.error('Veri alınamadı');
}
}
9. Zaman Aşımına Uğrayan İstekler
Çözüm: İstekler için zaman aşımı (timeout) ekleyin ve hatalı yanıtları ele alın.
10. `async` Fonksiyonlarının Yanıltıcı Kullanımı
Çözüm: `async/await` kullanımı, yalnızca gerçekten asenkron işlemler gerektiren durumlar için olmalıdır.