İçeriğe geç
parazade

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?
İçindekiler
  1. Async await nedir?
  2. Nasıl kullanılır?
  3. Hatalar nasıl yakalanır?
  4. Sık yapılan hatalar

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.

İlgili terimler

PromisePromise, ileride tamamlanacak bir asenkron işlemin sonucunu temsil eden nesnedir. İşlem sürerken bekleyen durumda olur, sonra başarıyla tamamlanır ya da hatayla reddedilir.Asenkron Programlama(Asynchronous Programming)Asenkron programlama, uzun süren bir işlemi beklerken programın diğer işlere devam etmesini sağlayan yaklaşımdır. Ağ istekleri, dosya okuma ve veritabanı sorguları gibi bekleme gerektiren işlerde uygulamanın donmasını önler.CallbackCallback, başka bir fonksiyona parametre olarak verilen ve belirli bir iş bittiğinde ya da bir olay gerçekleştiğinde çağrılan fonksiyondur. Türkçede geri çağırma fonksiyonu olarak da anılır.Try CatchTry catch, hata çıkarabilecek kodu try bloğunda çalıştırıp bir istisna oluştuğunda catch bloğunda yakalayan hata yönetimi yapısıdır. Böylece program çökmek yerine hatayı kontrollü biçimde ele alır.JavaScriptJavaScript, web sayfalarına buton tıklaması, form doğrulama ve anlık güncelleme gibi etkileşimler kazandıran, tarayıcıların yanı sıra Node.js ile sunucuda da çalışabilen yaygın bir programlama dilidir.PythonPython, okunabilir ve sade sözdizimiyle bilinen, genel amaçlı, açık kaynaklı bir programlama dilidir. Veri bilimi, yapay zekâ, otomasyon ve web geliştirmede en yaygın kullanılan dillerden biridir.Fonksiyon(Function)Fonksiyon, programlamada belirli bir işi yapan, isim verilmiş ve gerektiğinde tekrar tekrar çağrılabilen kod bloğudur. Girdi olarak parametre alabilir ve geriye bir değer döndürebilir.