await
- Node.js kursu
- Başlangıç
- Ders 95/116
- 5 dk
await ile promise bekleme öğrenirsin.
await nedir?
await, bir Promise'in sonuçunu bekleyip o değeri veren işleçtir. Yalnızca async işlevlerin içinde (ya da modülün en üst düzeyinde) kullanılabilir. await gördüğünde işlev donmaz; olay kuyruğuna (event loop) dönüş yapar ve sonuç gelince kaldığı yerden devam eder.
async function load() {
const value = await Promise.resolve("tamam");
console.log(value);
}Burada await, Promise.resolve("tamam") sonuçunu bekler ve value değişkenine atar. Bu biçim, zincirli then çağrılarına göre daha okunaklıdır; asenkron kodu sanki senkronmuş gibi yazar gibi yazarsın.
Uygulama Sıra sende: await ile değer al
async function load() tanımla. İşlev içinde const value = await Promise.resolve("merhaba") yaz. console.log(value) ile değeri yazdır. Sonra load() çağrısı yap.
Başlangıç kodu
// async function load tanımla
// await Promise.resolve ile değeri al, console.log ile yazdır
// en sonda load'u çağırÖrnek çözüm
async function load() {
const value = await Promise.resolve("merhaba");
console.log(value);
}
load();Beklenen çıktı
merhaba
await ve then farkı
await ile then aynı işi farklı biçimde yapar. then zincir kurarak sonuçu işlerken, await sonuçu bir değişkene atayarak senkron görünümlü kod yazmanı sağlar. İkisi de olay kuyruğunu bloke etmez; yalnızca bekleyen işlevi askıya alır.
// then ile
p.then(v => console.log(v));
// await ile
const v = await p;
console.log(v);Çoğu durumda await daha okunaklıdır; özellikle birbirine bağlı birden fazla asenkron adım varsa then zinciri iç içe geçebilir. await ile aynı mantığı düz bir akış olarak yazarsın.
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Boşluğu doldur: await
async function load() {
const value = ____ Promise.resolve("tamam");
console.log(value);
}
async function load() {
const value = await Promise.resolve("tamam");
console.log(value);
}
Açıklama: await Promise sonuçunu value'ya atar.
2 await hangi yerde doğrudan KULLANILAMAZ?
- Bir async function içinde
- Sıradan bir işlevin içinde Doğru cevap
- Modülün en üst düzeyinde
- Bir async arrow function içinde
Açıklama: await yalnızca async bağlamda çalışır.
3 await vs then
| Kavram | Anlamı |
|---|---|
await |
değeri değişkene atar |
then |
zincir kurar |
async |
await için gereklidir |