Asenkron JavaScript ile nasıl çalışıyorsunuz?
sobes.tech yapay zeka
AI'dan gelen yanıt
JavaScript'te asenkronluk ile callbackler, promise'ler ve async/await kullanarak çalışıyorum.
Callbackler, diğer fonksiyonlara argüman olarak geçirilen ve belirli bir işlemin tamamlanmasının ardından çalışan fonksiyonlardır. İç içe kullanıldıklarında "kâbus callbackleri"'ne yol açabilirler.
// Callback örneği
function fetchData(callback) {
setTimeout(() => {
callback("Veriler alındı");
}, 1000);
}
fetchData((data) => {
console.log(data); // 1 saniye sonra "Veriler alındı" yazdırır
});
Promise'ler, asenkron işlemin tamamlanmasını veya başarısız olmasını temsil eden nesnelerdir. Asenkron kodla çalışmayı kolaylaştırır, derin iç içe olmayı önler. Üç durumu vardır: pending (beklemede), fulfilled (başarılı), rejected (reddedildi).
// Promise örneği
function fetchDataPromise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Veriler alındı");
}, 1000);
});
}
fetchDataPromise()
.then((data) => {
console.log(data); // 1 saniye sonra "Veriler alındı" yazdırır
})
.catch((error) => {
console.error("Hata:", error);
});
Async/await, promise'ler üzerinde sözdizimi şekeridir ve asenkron kodu daha okunabilir hale getirir, senkron gibi görünmesini sağlar. async ile işaretlenmiş fonksiyonlar her zaman bir promise döner. await operatörü yalnızca async fonksiyonlar içinde kullanılabilir ve promise tamamlanana kadar yürütmeyi durdurur.
// async/await örneği
async function fetchDataAsync() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Veriler alındı");
}, 1000);
});
}
async function processData() {
try {
const data = await fetchDataAsync();
console.log(data); // 1 saniye sonra "Veriler alındı" yazdırır
} catch (error) {
console.error("Hata:", error);
}
}
processData();
API istekleriyle çalışırken async/await'i sık kullanıyorum çünkü en uygun ve okunabilir yol bu. Birden fazla asenkron işlemi paralel yapmak için Promise.all() veya Promise.allSettled() kullanıyorum.
Event loop'u kullanarak asenkron kodun yürütülme sırasını, mikro görevleri ve makro görevleri anlıyorum.