Asenkron Programlamaya Neden İhtiyacımız Var?
Örnek olarak, bir kullanıcı web uygulamanızda bir butona tıkladığında, bu buton bir API'yi çağırabilir. Senkron bir işlem kullanıyorsanız, tüm sayfa donabilir, çünkü JavaScript'iniz API yanıtını bekler. Asenkron bir işlemle, bu süreç arka planda gerçekleşirken, kullanıcı hala sayfa ile etkileşimde bulunabilir.
Callback Fonksiyonları: Eski Okul Ama Hala Geçerli mi?
Örnek bir Callback Kullanımı:
function veriAl(callback) {
setTimeout(() => {
console.log("Veri alındı!");
callback();
}, 1000);
}
veriAl(() => {
console.log("İkinci işlem tamam!");
});
Yukarıdaki örnekte, `veriAl` fonksiyonu 1 saniye bekledikten sonra callback fonksiyonunu çağırır. Bu şekilde, işlem tamamlandığında yapılacak ikinci işlem devreye girer.
Ancak, daha fazla callback ekledikçe, kod giderek karmaşıklaşır ve yönetimi zorlaşır.
Promises: Callback’leri Aşmak İçin Yeni Bir Yöntem
Promise Kullanımına Bir Göz Atalım:
function veriAl() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Veri alındı!");
resolve();
}, 1000);
});
}
veriAl().then(() => {
console.log("İkinci işlem tamam!");
});
Bu örnekte, `veriAl` fonksiyonu bir Promise döndürüyor. Promise başarılı bir şekilde tamamlandığında, `.then()` metodu ile ikinci işlem başlatılabilir. Bu, callback fonksiyonlarına göre çok daha okunabilir ve yönetilebilir bir yapı sunar.
Async/Await: Modern JavaScript ile Asenkron Programlama
Async/Await Kullanımına Örnek:
async function veriAl() {
console.log("Veri alınıyor...");
await new Promise(resolve => setTimeout(resolve, 1000));
console.log("Veri alındı!");
}
async function ikinciIslem() {
await veriAl();
console.log("İkinci işlem tamam!");
}
ikinciIslem();
Yukarıdaki örnekte, `async` fonksiyonu bir Promise döndürür ve `await` ile Promise’in tamamlanmasını bekleriz. Bu sayede, asenkron işlemler de tıpkı senkron kodlar gibi yazılabilir.
Her Yöntemin Avantajları ve Dezavantajları
- Promise: Daha okunabilir ve yönetilebilir, ancak zaman zaman .catch() gibi hata yönetimini doğru yapmak zor olabilir.
- Async/Await: En modern yaklaşım, en okunabilir ve senkron gibi çalışır. Ancak, eski tarayıcılarda uyumsuzluk sorunları yaşanabilir.
En İyi Uygulama Yöntemleri ve Kod Örnekleri
Özetle, JavaScript asenkron programlama, yazılım geliştiricilerinin hayatını kolaylaştıran güçlü bir araçtır. Callback, Promises ve Async/Await her biri, farklı ihtiyaçlara göre farklı avantajlar sunar. Hangi yapıyı kullanmanız gerektiği, uygulamanızın karmaşıklığına ve projenizin gereksinimlerine göre değişecektir.
Yazılım geliştirmede ne kadar başarılı olursanız olun, asenkron programlama tekniklerine hakim olmak sizi bir adım öne çıkaracaktır.