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