AsyncIterator

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

Ein AsyncIterator-Objekt ist ein Objekt, das dem asynchronen Iterator-Protokoll entspricht, indem es eine next()-Methode bereitstellt, die ein Versprechen zurückgibt, das ein Iterator-Ergebnisobjekt erfüllt. Das Objekt AsyncIterator.prototype ist ein verstecktes globales Objekt, von dem alle eingebauten asynchronen Iteratoren erben. Es bietet eine Methode [Symbol.asyncIterator](), die das asynchrone Iterator-Objekt selbst zurückgibt, und macht den asynchronen Iterator dadurch auch asynchron iterabel.

Beachten Sie, dass AsyncIterator kein globales Objekt ist, obwohl es in Zukunft mit dem Vorschlag zu asynchronen Iterator-Hilfsfunktionen einer sein wird. Das Objekt AsyncIterator.prototype, das von allen eingebauten asynchronen Iteratoren geteilt wird, kann mit folgendem Code erhalten werden:

js
const AsyncIteratorPrototype = Object.getPrototypeOf(
  Object.getPrototypeOf(Object.getPrototypeOf((async function* () {})())),
);

Beschreibung

Derzeit ist das einzige eingebaute JavaScript-Async-Iterator-Objekt das AsyncGenerator-Objekt, das von asynchronen Generatorfunktionen zurückgegeben wird. Es gibt einige andere eingebaute asynchrone Iteratoren in Web-APIs, wie zum Beispiel den eines ReadableStream.

Jeder dieser asynchronen Iteratoren hat ein eigenes Prototypobjekt, das die next()-Methode definiert, die von dem jeweiligen asynchronen Iterator verwendet wird. Alle diese Prototypobjekte erben von AsyncIterator.prototype, das eine Methode [Symbol.asyncIterator]() bereitstellt, die das asynchrone Iterator-Objekt selbst zurückgibt, und den asynchronen Iterator dadurch auch asynchron iterabel macht.

Hinweis: AsyncIterator.prototype implementiert nicht [Symbol.iterator](), daher sind asynchrone Iteratoren standardmäßig nicht synchron iterabel.

Instanzmethoden

AsyncIterator.prototype[Symbol.asyncDispose]()

Ruft die Methode return() von this auf und wartet auf deren Erfüllung, falls sie existiert. Dies implementiert das asynchrone Entsorgungsprotokoll und ermöglicht es, es zu entsorgen, wenn es mit await using verwendet wird.

AsyncIterator.prototype[Symbol.asyncIterator]()

Gibt das asynchrone Iterator-Objekt selbst zurück. Dies erlaubt es asynchronen Iterator-Objekten auch asynchron iterabel zu sein.

Beispiele

Verwenden eines asynchronen Iterators als asynchron iterabel

Alle eingebauten asynchronen Iteratoren sind auch asynchron iterabel, sodass Sie sie in einer for await...of-Schleife verwenden können:

js
const asyncIterator = (async function* () {
  yield 1;
  yield 2;
  yield 3;
})();
(async () => {
  for await (const value of asyncIterator) {
    console.log(value);
  }
})();
// Logs: 1, 2, 3

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-asynciteratorprototype

Browser-Kompatibilität

Siehe auch