AsyncGenerator.prototype.throw()

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.

Die throw()-Methode von AsyncGenerator-Instanzen wirkt so, als ob eine throw-Anweisung an der aktuellen angehaltenen Position im Körper des Generators eingefügt wird, was den Generator über eine Fehlerbedingung informiert und ihm ermöglicht, den Fehler zu behandeln oder Bereinigungen durchzuführen und sich zu schließen.

Syntax

js
asyncGeneratorInstance.throw(exception)

Parameter

exception

Die auszulösende Ausnahme. Zu Debugging-Zwecken ist es nützlich, wenn sie ein instanceof Error ist.

Rückgabewert

Wenn der ausgelöste Fehler nicht abgefangen wird, gibt er ein Promise zurück, das mit der übergebenen Ausnahme abgelehnt wird.

Wenn die Ausnahme durch einen try...catch abgefangen wird und der Generator fortfährt, um weitere Werte zu erzeugen, wird ein Promise zurückgegeben, das mit einem Object aufgelöst wird, das zwei Eigenschaften enthält:

done

Ein boolescher Wert:

  • true, wenn der Kontrollfluss der Generatorfunktion das Ende erreicht hat.
  • false, wenn die Generatorfunktion in der Lage ist, weitere Werte zu erzeugen.
value

Der Wert, der vom nächsten yield-Ausdruck erzeugt wird.

Beispiele

Verwendung von throw()

Das folgende Beispiel zeigt einen Generator und einen Fehler, der mit der throw-Methode ausgelöst wird. Ein Fehler kann wie üblich durch einen try...catch-Block abgefangen werden.

js
// An async task. Pretend it's doing something more useful
// in practice.
function sleep(time) {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, time);
  });
}

async function* createAsyncGenerator() {
  while (true) {
    try {
      await sleep(500);
      yield 42;
    } catch (e) {
      console.error(e);
    }
  }
}

const asyncGen = createAsyncGenerator();
asyncGen.next(1).then((res) => console.log(res)); // { value: 42, done: false }
asyncGen
  .throw(new Error("Something went wrong")) // Error: Something went wrong
  .then((res) => console.log(res)); // { value: 42, done: false }

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-asyncgenerator-prototype-throw

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
throw

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch