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:
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()
vonthis
auf und wartet auf deren Erfüllung, falls sie existiert. Dies implementiert das asynchrone Entsorgungsprotokoll und ermöglicht es, es zu entsorgen, wenn es mitawait 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:
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 |