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.

We’d love to hear your thoughts on the next set of proposals for the JavaScript language. You can find a description of the proposals here.
Please take two minutes to fill out our short survey.

Ein AsyncIterator-Objekt ist ein Objekt, das dem async Iterator-Protokoll entspricht, indem es eine next()-Methode bereitstellt, die ein Promise zurückgibt, das ein Iterator-Ergebnisobjekt erfüllt. Das AsyncIterator.prototype-Objekt ist ein verstecktes globales Objekt, von dem alle eingebauten async Iteratoren erben. Es stellt eine [Symbol.asyncIterator]()-Methode bereit, die das async Iterator-Objekt selbst zurückgibt, wodurch der async Iterator auch async iterabel wird.

Beachten Sie, dass AsyncIterator kein globales Objekt ist, obwohl es dies in Zukunft mit dem Async Iterator Helpers-Vorschlag sein wird. Das AsyncIterator.prototype-Objekt, das von allen eingebauten async Iteratoren gemeinsam genutzt wird, kann mit dem folgenden Code erhalten werden:

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

Beschreibung

Derzeit ist der einzige eingebaute async Iterator in JavaScript das AsyncGenerator-Objekt, das von async Generator-Funktionen zurückgegeben wird. Es gibt einige andere eingebaute async Iteratoren in Web-APIs, wie zum Beispiel einen ReadableStream.

Jeder dieser async Iteratoren hat ein eigenes Prototyp-Objekt, das die next()-Methode definiert, die vom jeweiligen async Iterator verwendet wird. Alle diese Prototyp-Objekte erben von AsyncIterator.prototype, das eine [Symbol.asyncIterator]()-Methode bereitstellt, die das async Iterator-Objekt selbst zurückgibt, wodurch der async Iterator auch async iterabel wird.

Note: AsyncIterator.prototype implementiert nicht [Symbol.iterator](), sodass async Iteratoren nicht standardmäßig synchron iterierbar sind.

Instanzmethoden

AsyncIterator.prototype[Symbol.asyncIterator]()

Gibt das async Iterator-Objekt selbst zurück. Dadurch können async Iterator-Objekte auch async iterabel sein.

Beispiele

Verwenden eines async Iterators als async iterabel

Alle eingebauten async Iteratoren sind auch async 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