CodeBlanks Logo Icon CodeBlanks

Asenkron generator'lar

JavaScript kursu · İleri seviye · Ders 52/100

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

  1. 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.

  2. 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);
    }
  3. Asenkron generator terimlerini eşleştir

    async function*
    asenkron generator tanımlar
    for await...of
    asenkron generatoru gezer
    await
    Promise bekler

İleri seviye bölümündeki tüm dersler