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 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® 2025 Language Specification
# sec-asynciteratorprototype

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
AsyncIterator
[Symbol.asyncIterator]

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch