Middle
JavaScript'te asenkronluğun prensipleri hakkında bana anlat.
sobes.tech yapay zeka
AI'dan gelen yanıt
JavaScript'teki asenkronluk ilkeleri, ana yürütme modeli üzerine kuruludur; burada, zaman alabilecek görevler (örneğin, ağ istekleri, zamanlayıcılar) ana yürütme akışını engellemez, böylece diğer işlemler gerçekleştirilebilir. Bu, şu yollarla sağlanır:
- Event Loop (Olay Döngüsü): Sürekli mesaj kuyruğunu kontrol eden ve içinden görevleri yürüten mekanizma. Asenkron bir işlem tamamlandığında, onun callback'i görev kuyruğuna eklenir.
- Callback Fonksiyonlar: Bir başka fonksiyona argüman olarak geçirilen ve asenkron işlemin tamamlanmasından sonra çalışan fonksiyonlar.
- Promises (Sözler): Asenkron bir işlemin nihai değerini temsil eden nesneler; ya başarılı (resolved) ya da reddedilmiş (rejected) olabilirler. Asenkron kodla çalışmayı kolaylaştırır, "callback hell"'den kaçınmayı sağlar.
- Async/Await: Promises üzerinde sözdizimi şekerleri; daha okunabilir ve senkron tarzda asenkron kod yazmaya olanak tanır.
asyncile işaretlenmiş fonksiyonlar her zaman bir Promise döner.awaitoperatörü yalnızcaasyncfonksiyonlar içinde kullanılabilir ve Promise çözülene kadar yürütmeyi duraklatır.
Yaklaşımların karşılaştırması:
| Yaklaşım | Okunabilirlik | Hata İşleme | Paralel Çalışma |
|---|---|---|---|
| Callbacks | Düşük | Karmaşık | Trivial olmayan olabilir |
| Promises | Orta | Kullanışlı | .all(), .race() |
| Async/Await | Yüksek | Kullanışlı (try/catch) | Biraz daha karmaşık hale gelir |
Promises kullanımı örneği:
fetch('/api/data') // Asenkron işlem
.then(response => response.json()) // Başarılı işlem
.then(data => console.log(data)) // Veri işleme
.catch(error => console.error('Hata:', error)); // Hata işleme
Async/Await kullanımı örneği:
async function fetchData() {
try {
const response = await fetch('/api/data'); // Promise bekleniyor
const data = await response.json(); // Promise bekleniyor
console.log(data);
} catch (error) {
console.error('Hata:', error); // Hata işleme
}
}
fetchData();