await operatörü
await ile bir promise'in sonucunu nasıl bekleyeceğini öğrenirsin.
await ne yapar?
await operatörü bir promise'in sonucunu çıkarır ve kodu promise çözümlenene kadar duraklatır. Yalnızca bir async fonksiyonun içinde (ya da ES modülünde en üst düzeyde) kullanılabilir.
async function loadUser() {
const user = await fetchUser();
console.log(user);
}Burada fetchUser() bir promise döndürür. await onun çözümlenmesini bekler, sonra sonucu user değişkenine verir. Böylece asenkron kod senkron görünümle yazılır.
await nerede kullanılır?
await anahtar kelimesi yalnızca bir async fonksiyonun gövdesinde geçerlidir. Sıradan bir fonksiyonda kullanılırsa sözdizimi hatası (SyntaxError) fırlatır. ES modüllerinde en üst düzeyde de kullanılabilir; bu durum 'top-level await' olarak bilinir.
// Hatalı: await, async dışında
function bad() {
const x = await p;
}Yukarıdaki kod hata verir. await'i kullanmak için fonksiyonu async yapmalısın.
Uygulama await ile promise sonucunu al
async function loadProfile() yaz. İçinde await ile fetchProfile() çağırıp sonucu profile değişkenine ata; sonra console.log(profile) yaz.
Örnek çözümü göster
async function loadProfile() {
const profile = await fetchProfile();
console.log(profile);
}
Kendini test et
-
await ekle
async function loadUser() { const user = ____ fetchUser(); console.log(user); }Cevabı göster
async function loadUser() { const user = await fetchUser(); console.log(user); } -
Aşağıdaki kod ne yapar?
function f() { const x = await p; }- Kod çalışır, x promise'in değerini alır.
- await p hiçbir zaman hata vermez.
- SyntaxError fırlatır çünkü fonksiyon async değil.
- p otomatik olarak çözümlenir.
Cevabı göster
SyntaxError fırlatır çünkü fonksiyon async değil. — Doğru! await yalnızca async fonksiyon içinde geçerlidir.
-
await kullanım senaryolarını eşleştir
- await fetchUser()
- promise çözümlenene kadar bekler
- await Promise.resolve(10)
- hemen 10 değerini verir
- await Promise.reject(err)
- hata fırlatır (try/catch gerekir)
- await 5
- 5 döndürür (promise olmasa da çalışır)