Asenkron Programlamaya Giriş
Diyelim ki, bir veritabanından veri çekiyorsunuz. Bu işlem biraz zaman alabilir, değil mi? O yüzden, bu işlemi asenkron bir şekilde yapmamız lazım. İşte callbacks, promises ve async/await bu noktada devreye giriyor.
1. Callbacks: Eski Usül Ama Hala Kullanılıyor
```javascript
function veriCek(callback) {
setTimeout(() => {
console.log("Veri çekildi!");
callback();
}, 1000);
}
veriCek(() => {
console.log("Callback ile işlem tamamlandı!");
});
```
Burada, setTimeout fonksiyonu veri çekme işlemini simüle eder ve tamamlandığında callback fonksiyonu çalıştırılır.
Ancak callbacks ile çalışırken dikkat etmeniz gereken önemli bir konu vardır: Callback Hell. Yani, iç içe geçmiş callback'ler, kodunuzu karmaşık ve okunması zor hale getirebilir.
2. Promises: Callback Hell'i Kurtaran Kahraman
```javascript
function veriCek() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Veri çekildi!");
resolve();
}, 1000);
});
}
veriCek().then(() => {
console.log("Promise ile işlem tamamlandı!");
}).catch((error) => {
console.log("Bir hata oluştu:", error);
});
```
Burada, then metodu ile işlemin başarılı olduğu, catch ile ise hata durumunun yönetildiğini görebilirsiniz. Promises ile callback hell'den kaçınarak daha temiz ve anlaşılır bir yapı kurabilirsiniz.
3. Async/Await: Modern JavaScript'in En Şık Çözümü
```javascript
async function veriCek() {
await new Promise((resolve) => {
setTimeout(() => {
console.log("Veri çekildi!");
resolve();
}, 1000);
});
console.log("Async/Await ile işlem tamamlandı!");
}
veriCek();
```
Bu yöntemle, await anahtar kelimesi işlemin tamamlanmasını bekler, ardından sonraki satıra geçer. Bu, asenkron kodunuzu daha temiz ve anlaşılır hale getirir.
4. Callbacks, Promises ve Async/Await Arasındaki Farklar
- Callbacks en eski yöntemdir. Basittir ancak iç içe callback'ler yazıldıkça kod karmaşıklaşabilir.
- Promises callback hell'i ortadan kaldırarak daha temiz ve okunabilir bir yapı sağlar.
- Async/Await ise Promises'i daha basit ve daha senkron bir şekilde kullanmanıza olanak tanır. Kodu çok daha anlaşılır hale getirir.
Sonuç: Hangisini Seçmeli?
Tüm bu yöntemleri öğrenmek, asenkron programlamayı anlamanın ve profesyonel geliştirici olmanın temel taşlarını oluşturur. JavaScript'in asenkron yapısını doğru kullanarak projelerinizde hem performansı artırabilir hem de kodunuzun okunabilirliğini ve sürdürülebilirliğini sağlayabilirsiniz.