| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/AsyncGenerator | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Januar 2020 browserbergreifend verfgbar.
Das AsyncGenerator-Objekt wird von einer async generator function zurckgegeben und entspricht sowohl dem async iterable protocol als auch dem async iterator protocol.
Async-Generator-Methoden geben immer Promise-Objekte zurck.
AsyncGenerator ist eine Unterklasse der versteckten AsyncIterator-Klasse.
Es gibt keine JavaScript-Entitt, die dem AsyncGenerator-Konstruktor entspricht. Instanzen von AsyncGenerator mssen von async generator functions zurckgegeben werden:
async function* createAsyncGenerator() {
yield Promise.resolve(1);
yield await Promise.resolve(2);
yield 3;
}
const asyncGen = createAsyncGenerator();
asyncGen.next().then((res) => console.log(res.value)); // 1
asyncGen.next().then((res) => console.log(res.value)); // 2
asyncGen.next().then((res) => console.log(res.value)); // 3
Es gibt nur ein verstecktes Objekt, das das Prototyp-Objekt ist, das von allen Objekten geteilt wird, die von async generator functions erstellt werden. Dieses Objekt wird oft als AsyncGenerator.prototype stilisiert, um es wie eine Klasse aussehen zu lassen, aber es sollte angemessener AsyncGeneratorFunction.prototype.prototype genannt werden, da AsyncGeneratorFunction eine tatschliche JavaScript-Entitt ist. Um die Prototypen-Kette von AsyncGenerator-Instanzen zu verstehen, siehe AsyncGeneratorFunction.prototype.prototype.
Diese Eigenschaften sind auf AsyncGenerator.prototype definiert und werden von allen AsyncGenerator-Instanzen geteilt.
AsyncGenerator.prototype.constructorDie Konstruktorfunktion, die das Instanzobjekt erstellt hat. Fr AsyncGenerator-Instanzen ist der Anfangswert AsyncGeneratorFunction.prototype.
Hinweis:
AsyncGenerator-Objekte speichern keinen Verweis auf die async generator function, die sie erstellt hat.
AsyncGenerator.prototype[Symbol.toStringTag]Der Anfangswert der [Symbol.toStringTag]-Eigenschaft ist der String "AsyncGenerator". Diese Eigenschaft wird in Object.prototype.toString() verwendet.
Erbt ebenfalls Instanz-Methoden von seinem Elternteil AsyncIterator.
AsyncGenerator.prototype.next()Gibt ein Promise zurck, das mit dem angegebenen Wert aufgelst wird, der durch den yield-Ausdruck geliefert wird.
AsyncGenerator.prototype.return()Verhlt sich so, als ob ein return-Statement im Krper des Generators an der aktuellen angehaltenen Position eingefgt wird, was den Generator beendet und es dem Generator ermglicht, alle Aufrumaufgaben auszufhren, wenn es mit einem try...finally-Block kombiniert wird.
AsyncGenerator.prototype.throw()Verhlt sich so, als ob ein throw-Statement im Krper des Generators an der aktuellen angehaltenen Position eingefgt wird, was den Generator ber einen Fehlerzustand informiert und es ihm ermglicht, den Fehler zu behandeln, oder Aufrumarbeiten durchzufhren und sich selbst zu schlieen.
Das folgende Beispiel iteriert ber einen async generator, der die Werte 16 in der Konsole bei abnehmenden Zeitintervallen protokolliert. Beachten Sie, wie jedes Mal ein Promise geliefert wird, das aber automatisch innerhalb der for await...of-Schleife aufgelst wird.
// An async task. Pretend it's doing something more useful
// in practice.
function delayedValue(time, value) {
return new Promise((resolve /*, reject */) => {
setTimeout(() => resolve(value), time);
});
}
async function* generate() {
yield delayedValue(2000, 1);
yield delayedValue(1000, 2);
yield delayedValue(500, 3);
yield delayedValue(250, 4);
yield delayedValue(125, 5);
yield delayedValue(50, 6);
console.log("All done!");
}
async function main() {
for await (const value of generate()) {
console.log("value", value);
}
}
main().catch((e) => console.error(e));
| Spezifikation |
|---|
| ECMAScript 2027 LanguageSpecification # sec-asyncgenerator-objects |
function* AusdruckAsyncGeneratorAsyncIteratorObject/FunctionDer Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |