AsyncIterator
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Januar 2020.
* Some parts of this feature may have varying levels of support.
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()vonthisauf und wartet auf deren Erfüllung, falls sie existiert. Dies implementiert das asynchrone Entsorgungsprotokoll und ermöglicht es, es zu entsorgen, wenn es mitawait usingverwendet 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> |
Browser-Kompatibilität
Loading…