Javascript’te Asenkron Programlama
Merhaba! Fatih Soysal burada. Bugün Javascript’te asenkron programlamanın inceliklerine dalacağız. Bildiğiniz gibi, Javascript tek iş parçacıklı (single-threaded) bir dildir. Bu, bir seferde sadece bir görev yapabileceği anlamına gelir. Ancak, birçok web uygulaması ağ istekleri, dosya okuma gibi zaman alan işlemler gerektirir. İşte burada asenkron programlama devreye giriyor; uygulamanızın bu işlemler bitene kadar donmasını engelliyor ve diğer görevleri yapmaya devam etmesini sağlıyor.
Callback Fonksiyonları
En eski asenkron programlama yöntemlerinden biri callback fonksiyonlarıdır. Bir fonksiyonun, zaman alan bir işlemin tamamlandığında çalıştırılacak başka bir fonksiyonu parametre olarak alması anlamına gelir. Örneğin, bir ağ isteği gönderdiğinizde, isteğin sonucu callback fonksiyonu içinde işlenir. Ancak, birçok callback fonksiyonunun ard arda kullanılması “callback cehennemi” olarak bilinen bir durum ortaya çıkarır, kodu okumayı ve bakımını zorlaştırır.
function istekYap(url, callback) {
// Ağ isteği simülasyonu
setTimeout(() => {
const veri = { mesaj: "İstek başarılı!" };
callback(veri);
}, 2000);
}
istekYap("https://fatihsoysal.com/api", (veri) => {
console.log(veri); // İsteğin sonucu burada işleniyor
});
Promise’ler
Promise’ler, callback cehennemini önlemek için geliştirilmiştir. Bir Promise, henüz gerçekleşmemiş bir değeri temsil eder. .then() metodu ile başarılı sonuçları, .catch() metodu ile de hataları yakalayabilirsiniz. Promise’ler daha temiz ve okunabilir bir kod yazmanıza yardımcı olur. Dahası, .then() metodlarını zincirleme yoluyla birden fazla asenkron işlemi sıralayabilirsiniz.
function istekYap(url) {
return new Promise((resolve, reject) => {
// Ağ isteği simülasyonu
setTimeout(() => {
const veri = { mesaj: "Promise ile istek başarılı!" };
resolve(veri); // Başarılı sonuç
//reject(new Error("İstek başarısız!")); // Hata durumunda
}, 2000);
});
}
istekYap("https://fatihsoysal.com/api")
.then(veri => console.log(veri))
.catch(hata => console.error(hata));
Async/Await
Async/Await, Promise’leri kullanarak asenkron kodu daha senkron bir şekilde yazmanıza olanak tanır. async anahtar kelimesi ile bir fonksiyonu asenkron hale getirebilirsiniz ve await anahtar kelimesi ile bir Promise’in çözümlenmesini bekleyebilirsiniz. Bu sayede kodunuz daha okunaklı ve anlaşılır hale gelir. Karmaşık asenkron işlemleri yönetmek için idealdir.
async function istekYapAsync(url) {
try {
const veri = await istekYap(url); // Promise'in çözümlenmesini bekler
console.log(veri);
} catch (hata) {
console.error(hata);
}
}
istekYapAsync("https://fatihsoysal.com/api");
Sonuç olarak, Javascript’te asenkron programlama, performanslı ve ölçeklenebilir web uygulamaları geliştirmek için olmazsa olmazdır. Callback fonksiyonlarından, Promise’lere ve Async/Await’e doğru ilerleyerek kodunuzu daha temiz, okunaklı ve bakımı kolay hale getirebilirsiniz. Daha fazla bilgi için fatihsoysal.com adresini ziyaret edebilirsiniz.
#Etiketler
Javascript, Asenkron Programlama, Callback, Promise, Async Await, Javascript Dersleri, Web Geliştirme
