JavaScript Academy · Ders

Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler

Zaman içinde gelen değerleri tüketmek için eşzamansız üreteçleri ve for await...of'u kullanın. Symbol.asyncIterator'ı ve basit eşzamansız işlem hatlarını öğrenin.

3. ders / 38 adım

Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 3 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 3 dersten oluşur.

Neden eşzamansız yineleme?

Hedef: Daha sonra gelebilecek değerleri tüketmek.

  • for await...of döngüleri eşzamansız yinelenebilirler üzerinde çalışır
  • async function* eşzamansız üreteçler oluşturur
  • Symbol.asyncIterator bir nesnenin eşzamansız yinelenebilir olduğunu belirtir
  • Küçük bir eşzamansız map örneği
Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler — resim 1

async function* ve for await...of

Eşzamansız bir üreteç (async function*), for await...of tarafından tüketilen değerleri yield ile üretir.

// Use an async generator to yield values (could be delayed in real apps)
(async function () {
  async function* countAsync(n) {
    for (let i = 1; i <= n; i = i + 1) {
      // In real code you could await a delay or I/O here
      yield i;
    }
  }

  for await (const x of countAsync(3)) {
    console.log("async value:", x);
  }
})();
Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler — resim 2

Elle eşzamansız next()

Eşzamansız bir yineleyicideki next(), { value, done } sonucuna çözümlenen bir vaat döndürür.

// Drive an async iterator manually with await it.next()
(async function () {
  async function* two() {
    yield "A";
    yield "B";
  }
  const it = two();
  console.log(await it.next()); // { value: "A", done: false }
  console.log(await it.next()); // { value: "B", done: false }
  console.log(await it.next()); // { value: undefined, done: true }
})();
Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler — resim 3

Nesnelerde Symbol.asyncIterator

Bir nesnenin for await...of ile çalışmasını sağlamak için eşzamansız bir yineleyici döndüren [Symbol.asyncIterator]() ekleyin.

// Mark a plain object as async-iterable via Symbol.asyncIterator
(async function () {
  const AsyncTwice = {
    from: function (a, b) {
      return {
        a: a, b: b,
        [Symbol.asyncIterator]: async function () {
          let step = 0;
          return {
            next: async function () {
              if (step === 0) { step = 1; return { value: a, done: false }; }
              if (step === 1) { step = 2; return { value: b, done: false }; }
              return { value: undefined, done: true };
            }
          };
        }
      };
    }
  };

  for await (const v of AsyncTwice.from("X", "Y")) {
    console.log("from object:", v);
  }
})();
Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler — resim 4

Eşzamansız map işlem hattı

Her adımın tamamlanmasını bekleyen küçük işlem hatları oluşturmak için eşzamansız üreteçleri birleştirin.

// Async map: transform values lazily while awaiting work
(async function () {
  async function* countAsync(n) {
    for (let i = 1; i <= n; i = i + 1) {
      yield i;
    }
  }

  async function* asyncMap(iterable, fn) {
    for await (const v of iterable) {
      // fn can be async; await its result
      const out = await fn(v);
      yield out;
    }
  }

  const doubled = asyncMap(countAsync(4), async function (x) {
    // simulate async transform (no real delay for demo)
    return x * 2;
  });

  const collected = [];
  for await (const v of doubled) {
    collected.push(v);
  }
  console.log("doubled async:", collected);
})();
Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler — resim 5

İyi alışkanlıklar

İpuçları:

  • for await...of bir eşzamansız yinelenebilir gerektirir (Symbol.asyncIterator).
  • Eşzamansız üreteçleri kolayca tanımlamak için async function* kullanın.
  • Her next() çağrısı beklenir; duyarlı kalmak için işi küçük tutun.
Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler — resim 6

Eşzamansız yinelenebilirlerin temelleri testi

Hızlı kontrol: Eşzamansız yinelenebilir gereksinimi.

Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler — resim 7

Özet

Özet: Eşzamansız üreteçler oluşturmak için async function* ve yield kullanın. for await...of ile döngü kurun veya next() çağrısını elle bekleyin. Yardımcı üreteçlerle küçük eşzamansız işlem hatları oluşturun.

Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler — resim 8
Başlamak ücretsiz

Yapay zeka eğitmeniyle JavaScript öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
59
Dersler
200

Sıkça Sorulan Sorular

“Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler” dersi ücretsiz mi?

Evet — “Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 3 dersten oluşur.

“Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler” dersinde ne öğreneceğim?

Zaman içinde gelen değerleri tüketmek için eşzamansız üreteçleri ve for await...of'u kullanın. Symbol.asyncIterator'ı ve basit eşzamansız işlem hatlarını öğrenin. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 3. dersidir.

“Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yinelemeli Protokol ve for...of
  2. Üreteç İşlevleri, yield ve Küçük İşlem Hatları
  3. Eşzamansız Yineleyiciler — for await...of ve Eşzamansız Üreteçler
← JavaScript Academy Sayfasına Dön