Callback Hell Nedir ve Neden Bir Sorun Olur?
Bir projede bu durumu sürekli yaşadığınızı varsayın. Üçüncü, dördüncü callback’i yazarken, iç içe geçmiş fonksiyonlar sayesinde kod okunmaz hale gelebilir. İşte tam bu noktada "Callback Hell" devreye girer. Kodunuzu daha temiz ve bakımı kolay hale getirmek için yapabileceğiniz birkaç şey var.
Promise: Callback Hell’e Karşı Gelen Kahraman
İşte klasik bir callback yapısının, Promise yapısı ile nasıl daha temiz hale geldiğine bir örnek:
const fetchUserData = (userId) => {
return new Promise((resolve, reject) => {
// Veritabanından kullanıcı verilerini çekme işlemi
if (userId) {
resolve({ id: userId, name: 'John Doe' });
} else {
reject('User not found');
}
});
};
fetchUserData(1)
.then(user => console.log(user))
.catch(error => console.log(error));
Bu kodda, asenkron işlemler then ve catch blokları ile yönetiliyor. Her şey daha düzenli ve okunabilir.
Async/Await: Daha Okunabilir, Daha Az Karmaşık Kod
Async/Await ile ilgili bir örnek:
const fetchUserData = async (userId) => {
try {
const user = await getUserData(userId);
console.log(user);
} catch (error) {
console.log(error);
}
};
fetchUserData(1);
Yukarıdaki örnekte, await kullanarak kodu senkron bir hale getirdik. try/catch blokları ile hata yönetimini de kolaylaştırdık. Kodunuzu yazarken, asenkron işlemleri daha anlaşılır ve düzenli bir şekilde yazmanıza olanak sağlar.
Performans İyileştirmeleri: Asenkron Kodunuzu Daha Verimli Hale Getirin
Promise.all() gibi araçlar, aynı anda birden fazla işlemi çalıştırarak zaman kazandırır. Örneğin, aynı anda birden fazla API çağrısı yapmak istiyorsanız, bunları Promise.all() ile çalıştırabilirsiniz. Bu, işlemlerin birbirinden bağımsız çalışmasını sağlar.
const fetchMultipleData = async () => {
const [users, posts] = await Promise.all([
fetchUserData(1),
fetchPostsData(1)
]);
console.log(users, posts);
};
fetchMultipleData();
Bu kod, iki asenkron işlemi paralel olarak çalıştırır ve toplam bekleme süresini azaltır.
Sonuç: Daha Temiz ve Verimli Kod Yazın
Unutmayın, her zaman en temiz ve en verimli çözümü tercih edin. Bu, sadece kodunuzu daha okunabilir hale getirmekle kalmaz, aynı zamanda uzun vadede projelerinizin bakımını da kolaylaştırır. Eğer Node.js ile ilgili daha fazla ipucu ve rehber arıyorsanız, blogumuzu takip etmeye devam edin!