Async Await Nedir?
Yayın: · Son güncelleme:
Async Await Nedir? Kısaca
Async/await, asenkron kodu sıradan, yukarıdan aşağı okunan kod gibi yazmayı sağlayan bir sözdizimidir. async bir fonksiyonun asenkron olduğunu belirtir, await ise bir Promise'in sonucunu bekler.

Async await nedir?
Async/await, asenkron işlemleri beklerken kodun okunaklı kalmasını sağlayan bir yazım biçimidir. JavaScript'e 2017'de eklenen bu yapı Python, C#, Kotlin ve Dart gibi dillerde de bulunur. Arka planda yine Promise ya da benzeri bir mekanizma çalışır; değişen, kodu yazma şeklidir.
Nasıl kullanılır?
Bir fonksiyonun başına async yazdığınızda, o fonksiyon her zaman bir Promise döndürür. Fonksiyonun içinde await kelimesini kullanarak bir işlemin bitmesini bekleyebilirsiniz. Peki beklerken ne olur? Program donmaz; tarayıcı ya da sunucu, sonucu beklenen işlemi bir kenara koyup sıradaki işlere geçer ve sonuç gelince fonksiyona kaldığı yerden devam ettirir.
Örneğin bir sipariş sayfası için const yanit = await fetch("/api/siparisler") satırı sunucudan veriyi ister. Sonraki satırda const veri = await yanit.json() ile gelen yanıt okunur. Kod sanki senkronmuş gibi sırayla ilerler, ama tarayıcı bu sırada kilitlenmez.
Hatalar nasıl yakalanır?
Kural basittir. Await edilen bir işlem başarısız olursa hata fırlatılır. Bu hatayı yakalamanın standart yolu, kodu try/catch bloğuna almaktır. Böylece internet bağlantısı koptuğunda ya da sunucu 500 hatası verdiğinde kullanıcıya anlamlı bir mesaj gösterebilirsiniz.
Sık yapılan hatalar
En yaygın hata await yazmayı unutmaktır; bu durumda değişkene sonuç yerine bekleyen bir Promise atanır. İkinci hata, birbirinden bağımsız üç isteği art arda beklemektir. Her biri bir saniye sürüyorsa toplam üç saniye beklersiniz, Promise.all ile ise yaklaşık bir saniyede bitirirsiniz.
Sıkça Sorulan Sorular
Await her yerde kullanılabilir mi?
Genellikle yalnız async olarak işaretlenmiş fonksiyonların içinde kullanılır. Modern JavaScript modüllerinde dosyanın en üst seviyesinde de await yazmak mümkündür.
Async await kodu yavaşlatır mı?
Tek başına yavaşlatmaz. Ancak birbirinden bağımsız işlemleri tek tek await ile beklemek gereksiz bekleme yaratır; bu durumda Promise.all ile işleri aynı anda başlatmak daha hızlıdır.