Asenkronluk nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
JavaScript bağlamında asenkronluk, programın ana yürütme akışını engellemeden görevleri yerine getirme yeteneğidir. Bu, uygulamanın, örneğin, ağ istekleri veya giriş/çıkış işlemleri sırasında yanıt verebilir kalmasını sağlar.
Ana kavramlar ve mekanizmalar:
-
Event Loop: JavaScript'teki asenkronitenin kalbidir. Sürekli olarak mesaj kuyruğunu (Message Queue) kontrol eder ve çağrı yığını (Call Stack) boşsa, görevleri kuyruğdan yığına taşır.
-
Callback Fonksiyonları: Diğer fonksiyonlara argüman olarak geçirilen ve asenkron bir işlemin tamamlanmasının ardından çağrılan fonksiyonlar.
-
Promises: Bir asenkron işlemin sonlanmasını (veya başarısızlığını) ve sonucunu temsil eden nesne. Daha okunabilir asenkron kodlar yazmaya olanak tanır, "callback hell"'den kaçınır.
// Promise örneği const myPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve("İşlem başarıyla tamamlandı!"); }, 1000); }); myPromise .then(result => { console.log(result); // 1 saniye sonra gösterilir }) .catch(error => { console.error(error); }); -
Async/Await: Promises üzerinde sözdizimi şekeridir, asenkron kodu senkron gibi yapar, okunabilirliği artırır ve hata yönetimini kolaylaştırır.
// async/await ile örnek async function fetchData() { try { const response = await fetch('https://api.example.com/data'); const data = await response.json(); console.log(data); } catch (error) { console.error('Veri alınırken hata:', error); } } fetchData();
Mekanizmaların karşılaştırması:
| Mekanizma | Açıklama | Avantajlar | Dezavantajlar |
|---|---|---|---|
| Callback Fonksiyonları | Asenkron görevin tamamlanmasının ardından çağrılan fonksiyonlar. | Basit ve temel mekanizma. | "Callback hell" oluşabilir. |
| Promises | Asenkron işlemin sonucunu temsil eden nesne. | Daha iyi okunabilirlik, hata yönetimi. | Zincirlerde hâlâ karmaşık olabilir. |
| Async/Await | Promises üzerinde sözdizimi şekeridir. Kodu lineer ve anlaşılır yapar. | En yüksek okunabilirlik, hata ayıklama kolaylığı. | Promises gerektirir. |
Asenkronluk, modern ve duyarlı web uygulamaları oluşturmak için kritik öneme sahiptir, API istekleri gibi uzun süren işlemleri kullanıcı arayüzünü engellemeden gerçekleştirmeye olanak tanır.