Callback Hell Nedir?
Callback Hell'in Çözümü: Promise'ler ve Async/Await
# Promise’ler: Daha Temiz ve Okunabilir Kod
Örnek bir Promise kullanımına göz atalım:
let veriGetir = new Promise((resolve, reject) => {
let veri = true; // Örnek veri durumu
if (veri) {
resolve("Veri başarıyla alındı!");
} else {
reject("Veri alınamadı!");
}
});
veriGetir
.then((mesaj) => {
console.log(mesaj); // "Veri başarıyla alındı!"
})
.catch((hata) => {
console.log(hata); // Hata durumunda
});
Bu kodda, callback yerine, `resolve()` ve `reject()` kullanarak işlem sonucunu bekleyebilir ve işlem başarılı olduğunda ne yapılacağını belirleyebilirsiniz. Böylece, kodunuz daha temiz ve yönetilebilir hale gelir.
# Async/Await: Kodunuzu Sözlü Hale Getirin
Async/Await’in temel çalışma prensibi, `async` fonksiyonlarının asenkron çalışması ve `await` anahtar kelimesinin ise bir Promise’in tamamlanmasını beklemesidir.
async function veriGetir() {
let veri = true; // Örnek veri durumu
if (veri) {
return "Veri başarıyla alındı!";
} else {
throw new Error("Veri alınamadı!");
}
}
async function main() {
try {
let mesaj = await veriGetir();
console.log(mesaj); // "Veri başarıyla alındı!"
} catch (hata) {
console.log(hata.message); // Hata durumunda
}
}
main();
Burada, `await` sayesinde fonksiyonun tamamlanmasını bekliyoruz ve daha sonra işlem sonucunu alıyoruz. Hata yönetimi de oldukça basit hale geliyor. Kısacası, Async/Await ile kodunuzu hem daha anlaşılır hem de daha verimli hale getirebilirsiniz.
Callback Hell’in Çözümü İçin Adımlar
2. Promise’ler kullanarak kodunuzu daha yönetilebilir hale getirin. Böylece, zincirleme callback'lerden kaçınabilirsiniz.
3. Async/Await ile kodunuzu daha doğal ve senkron hale getirin. Kodunuzu okurken “bu gerçekten asenkron mu?” diye sorgulamaya gerek kalmaz.
4. Hata yönetimine dikkat edin. Asenkron kodlarda hata yönetimi oldukça önemlidir. `try/catch` blokları kullanarak hataları kontrol edebilir ve kullanıcı dostu mesajlar gösterebilirsiniz.
Sonuç
Şimdi asenkron kod dünyasına adım atın ve callback hell’i geride bırakın!