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:
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:
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 |