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
asyncGeneratorInstance.throw(exception)
Parameter
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:
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.
// 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 Language Specification # sec-asyncgenerator-prototype-throw |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
async function*
- Iterators und generators Leitfaden