Asenkron generator'lar
async function* ile asenkron generator'ları ve for await...of ile gezinmeyi öğrenirsin.
Asenkron generatorler
async function* ile asenkron generator tanımlarsın. Bu generator, yield ile Promise dönebilir ve gövdesinde await kullanabilir. Her yield, bir Promise çözülene kadar bekleyebilir.
async function* stream() {
yield await fetch('/data');
yield await fetch('/more');
}Asenkron generatorlar, ağ istekleri veya veritabanı sorguları gibi zaman alan işlemleri adım adım üretmek için idealdir.
for await...of döngüsü
Asenkron bir generatoru gezmek için for await...of döngüsü kullanılır. Bu döngü, her değeri bir Promise olarak bekler ve sırayla verir. for...of kullanamazsın çünkü değerler zaman içinde gelir.
for await (const chunk of stream()) {
console.log(chunk);
}Her chunk için döngü gövdesi çalışır; generator bittiğinde döngü sonlanır.
Uygulama Asenkron generator yaz
fetchNumbers adında bir asenkron generator yaz: yield await Promise.resolve(1), yield await Promise.resolve(2), yield await Promise.resolve(3) olsun. for await...of ile generatoru gez ve her değeri console.log ile yazdır.
Örnek çözümü göster
async function* fetchNumbers() {
yield await Promise.resolve(1);
yield await Promise.resolve(2);
yield await Promise.resolve(3);
}
for await (const n of fetchNumbers()) {
console.log(n);
}
Kendini test et
-
Asenkron bir generatoru gezmek için hangi döngü kullanılır?
- for await...of
- for...in
- forEach
- while...await
Cevabı göster
for await...of — Doğru! for await...of asenkron generatorlardan değerleri sırayla bekleyerek alır.
-
for await döngüsünü tamamla
async function* stream() { yield 1; } ____ (const value of stream()) { console.log(value); }Cevabı göster
async function* stream() { yield 1; } for await (const value of stream()) { console.log(value); } -
Asenkron generator terimlerini eşleştir
- async function*
- asenkron generator tanımlar
- for await...of
- asenkron generatoru gezer
- await
- Promise bekler