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

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch