Asenkron Programlamanın Temelleri
Ama işin içine callback fonksiyonları, promises ve async/await gibi yapılar girdiğinde işler biraz karmaşıklaşabilir. Endişelenmeyin, bu yazıda bu terimleri tek tek inceleyeceğiz ve aralarındaki farkları detaylı bir şekilde açıklayacağız.
Callback Fonksiyonları: İlk Adım
Örneğin:
function veriAl(callback) {
setTimeout(() => {
console.log("Veri alındı!");
callback();
}, 1000);
}
function veriYaz() {
console.log("Veri yazılıyor...");
}
veriAl(veriYaz);
Bu örnekte, veriAl fonksiyonu veriyi aldıktan sonra veriYaz fonksiyonunu çağırır. Basit gibi görünüyor, ama daha karmaşık senaryolarda, birden fazla işlem yapmanız gerektiğinde callback fonksiyonları oldukça karışık hale gelebilir.
Promises: Daha Temiz Bir Çözüm
Örnek bir promise kullanımı:
function veriAl() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Veri alındı!");
resolve();
}, 1000);
});
}
function veriYaz() {
console.log("Veri yazılıyor...");
}
veriAl().then(veriYaz).catch((err) => console.log("Hata: " + err));
Bu örnekte, veriAl fonksiyonu bir promise döner. Promise başarılı bir şekilde tamamlandığında then bloğu çalışır. Eğer bir hata oluşursa, catch bloğu devreye girer.
Async/Await: En Modern Yaklaşım
Bir async/await örneği:
async function veriAl() {
return new Promise((resolve) => {
setTimeout(() => {
console.log("Veri alındı!");
resolve();
}, 1000);
});
}
async function veriYaz() {
await veriAl();
console.log("Veri yazılıyor...");
}
veriYaz();
Burada, veriYaz fonksiyonu await ile veriAl fonksiyonunun tamamlanmasını bekler. Bu yazım tarzı, asenkron kodu daha doğal bir şekilde yazmanızı sağlar.
Callback, Promises ve Async/Await Arasındaki Farklar
- Callback: Asenkron işlemleri takip etmek için kullanılan ilk yöntemdir. Ancak çok sayıda callback fonksiyonu kullanıldığında, kod karışabilir ve yönetilmesi zorlaşabilir.
- Promises: Callback hell’i engellemek için geliştirilmiş bir yapıdır. Kod daha temiz ve yönetilebilir olur, ancak yine de bazı durumlar için karmaşık olabilir.
- Async/Await: Promises ile yazılan asenkron kodu daha senkron bir hale getiren yapıdır. En temiz ve anlaşılır yöntemdir, ancak eski tarayıcılarda veya JavaScript sürümlerinde desteklenmeyebilir.
Hangi Durumda Hangi Yapıyı Kullanmalıyız?
Sonuç
Asenkron programlama konusunda uzmanlaşarak, daha hızlı ve verimli web uygulamaları geliştirebilirsiniz. İyi kodlar yazmak ve JavaScript’in asenkron dünyasına hakim olmak size büyük bir avantaj sağlayacaktır.