Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Experiment: Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.

AsyncGenerator

BaselineWidely available

DasAsyncGenerator-Objekt wird von einerasync generator function zurückgegeben und entspricht sowohl demasync iterable protocol als auch dem async iterator protocol.

Async-Generator-Methoden geben immerPromise-Objekte zurück.

AsyncGenerator ist eine Unterklasse der verstecktenAsyncIterator-Klasse.

Konstruktor

Es gibt keine JavaScript-Entität, die demAsyncGenerator-Konstruktor entspricht. Instanzen vonAsyncGenerator müssen vonasync generator functions zurückgegeben werden:

js
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)); // 1asyncGen.next().then((res) => console.log(res.value)); // 2asyncGen.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 alsAsyncGenerator.prototype stilisiert, um es wie eine Klasse aussehen zu lassen, aber es sollte angemessenerAsyncGeneratorFunction.prototype.prototype genannt werden, daAsyncGeneratorFunction eine tatsächliche JavaScript-Entität ist. Um die Prototypen-Kette vonAsyncGenerator-Instanzen zu verstehen, sieheAsyncGeneratorFunction.prototype.prototype.

Instanz-Eigenschaften

Diese Eigenschaften sind aufAsyncGenerator.prototype definiert und werden von allenAsyncGenerator-Instanzen geteilt.

AsyncGenerator.prototype.constructor

Die Konstruktorfunktion, die das Instanzobjekt erstellt hat. FürAsyncGenerator-Instanzen ist der AnfangswertAsyncGeneratorFunction.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 inObject.prototype.toString() verwendet.

Instanz-Methoden

Erbt ebenfalls Instanz-Methoden von seinem ElternteilAsyncIterator.

AsyncGenerator.prototype.next()

Gibt einPromise zurück, das mit dem angegebenen Wert aufgelöst wird, der durch denyield-Ausdruck geliefert wird.

AsyncGenerator.prototype.return()

Verhält sich so, als ob einreturn-Statement im Körper des Generators an der aktuellen angehaltenen Position eingefügt wird, was den Generator beendet und es dem Generator ermöglicht, alle Aufräumaufgaben auszuführen, wenn es mit einemtry...finally-Block kombiniert wird.

AsyncGenerator.prototype.throw()

Verhält sich so, als ob einthrow-Statement im Körper des Generators an der aktuellen angehaltenen Position eingefügt wird, was den Generator über einen Fehlerzustand informiert und es ihm ermöglicht, den Fehler zu behandeln, oder Aufräumarbeiten durchzuführen und sich selbst zu schließen.

Beispiele

Async-Generator-Iteration

Das folgende Beispiel iteriert über einen async generator, der die Werte 1–6 in der Konsole bei abnehmenden Zeitintervallen protokolliert. Beachten Sie, wie jedes Mal ein Promise geliefert wird, das aber automatisch innerhalb derfor await...of-Schleife aufgelöst wird.

js
// 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));

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-asyncgenerator-objects

Browser-Kompatibilität

Siehe auch

MDN-Feedback-Box

Diese Seite wurde automatisch aus dem Englischen übersetzt.


[8]ページ先頭

©2009-2025 Movatter.jp