0Pricing
JavaScript Academy · Lektion

Asynchrone Iteratoren – for await...of und asynchrone Generatoren

Asynchrone Generatoren und for await...of verwenden, um über die Zeit eintreffende Werte zu verarbeiten. Symbol.asyncIterator und einfache asynchrone Pipelines kennenlernen

Asynchrone Iteratoren – for await...of und asynchrone Generatoren ist eine kostenlose JavaScript Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des JavaScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der JavaScript Academy-Kurs umfasst insgesamt 3 Lektionen.

Warum asynchrone Iteration?

Ziel: Verarbeiten Sie Werte, die möglicherweise erst später eintreffen.

  • for await...of durchläuft asynchrone Iterables
  • async function* erstellt asynchrone Generatoren
  • Symbol.asyncIterator kennzeichnet ein Objekt als asynchron iterierbar
  • Kleines asynchrones Map-Beispiel
Asynchrone Iteratoren – for await...of und asynchrone Generatoren — Illustration 1

async function* und for await...of

Ein asynchroner Generator (async function*) liefert Werte, die von for await...of verarbeitet werden.

// 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);
  }
})();
Asynchrone Iteratoren – for await...of und asynchrone Generatoren — Illustration 2

Manuelles asynchrones next()

next() eines asynchronen Iterators gibt ein Promise zurück, das zu { value, done } aufgelöst wird.

// 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 }
})();
Asynchrone Iteratoren – for await...of und asynchrone Generatoren — Illustration 3

Symbol.asyncIterator bei Objekten

Fügen Sie [Symbol.asyncIterator]() hinzu, das einen asynchronen Iterator zurückgibt. So funktioniert ein Objekt mit for await...of.

// 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);
  }
})();
Asynchrone Iteratoren – for await...of und asynchrone Generatoren — Illustration 4

Asynchrone Map-Pipeline

Setzen Sie asynchrone Generatoren zusammen, um kleine Pipelines aufzubauen, die jeden Schritt abwarten.

// 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);
})();
Asynchrone Iteratoren – for await...of und asynchrone Generatoren — Illustration 5

Gute Gewohnheiten

Tipps:

  • for await...of benötigt ein asynchron iterierbares Objekt (Symbol.asyncIterator).
  • Verwenden Sie async function*, um asynchrone Generatoren einfach zu definieren.
  • Auf jedes next() wird gewartet. Halten Sie die einzelnen Arbeitsschritte klein, damit die Anwendung reaktionsfähig bleibt.
Asynchrone Iteratoren – for await...of und asynchrone Generatoren — Illustration 6

Quiz zu den Grundlagen asynchroner Iterables

Schnelltest: Voraussetzung für ein asynchrones Iterable.

Asynchrone Iteratoren – for await...of und asynchrone Generatoren — Illustration 7

Zusammenfassung

Zusammenfassung: Verwenden Sie async function* und yield, um asynchrone Generatoren zu erstellen. Durchlaufen Sie sie mit for await...of oder warten Sie manuell auf next(). Bauen Sie mit Hilfsgeneratoren kleine asynchrone Pipelines auf.

Asynchrone Iteratoren – for await...of und asynchrone Generatoren — Illustration 8

Häufig gestellte Fragen

Ist die Lektion „Asynchrone Iteratoren – for await...of und asynchrone Generatoren“ kostenlos?

Ja — der vollständige Text von „Asynchrone Iteratoren – for await...of und asynchrone Generatoren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des JavaScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der JavaScript Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „Asynchrone Iteratoren – for await...of und asynchrone Generatoren“?

Asynchrone Generatoren und for await...of verwenden, um über die Zeit eintreffende Werte zu verarbeiten. Symbol.asyncIterator und einfache asynchrone Pipelines kennenlernen Du übst JavaScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um JavaScript Academy zu starten?

Keine Vorkenntnisse erforderlich. JavaScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.

Wie lange dauert die Lektion „Asynchrone Iteratoren – for await...of und asynchrone Generatoren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser JavaScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede JavaScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Iterable-Protokoll und for...of
  2. Generatorfunktionen, yield und kleine Pipelines
  3. Asynchrone Iteratoren – for await...of und asynchrone Generatoren
← Zurück zu JavaScript Academy