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 Versprechen zurückgibt, das zu einem Iterationsergebnisobjekt führt. Das AsyncIterator.prototype-Objekt ist ein verborgenes globales Objekt, von dem alle eingebauten asynchronen Iteratoren erben. Es bietet eine [Symbol.asyncIterator]()-Methode, die das asynchrone Iterator-Objekt selbst zurückgibt, was den asynchronen Iterator auch asynchron iterierbar macht.

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

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

Beschreibung

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

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

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

Instanzmethoden

AsyncIterator.prototype[Symbol.asyncIterator]()

Gibt das asynchrone Iterator-Objekt selbst zurück. Dies ermöglicht asynchronen Iterator-Objekten auch asynchron iterierbar zu sein.

Beispiele

Verwendung eines asynchronen Iterators als asynchron iterierbar

Alle eingebauten asynchronen Iteratoren sind auch asynchron iterierbar, 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