TypeError: already executing generator
Die JavaScript-Ausnahme "TypeError: already executing generator" tritt auf, wenn ein Generator mit einer seiner Methoden (wie next()
) fortgesetzt wird, während der Funktionskörper des Generators selbst ausgeführt wird.
Meldung
TypeError: Generator is already running (V8-based) TypeError: already executing generator (Firefox) TypeError: Generator is executing (Safari)
Fehlertyp
Was ist schiefgelaufen?
Die Methoden eines Generators, next()
, return()
, und throw()
, sind dazu gedacht, die Ausführung einer Generatorfunktion fortzusetzen, wenn sie nach einem yield
-Ausdruck pausiert oder vor der ersten Anweisung steht. Wenn ein Aufruf einer dieser Methoden erfolgt, während die Generatorfunktion ausgeführt wird, wird der Fehler ausgelöst. Wenn Sie innerhalb der Generatorfunktion zurückkehren oder einen Fehler werfen möchten, verwenden Sie bitte die return
-Anweisung oder die throw
-Anweisung.
Beispiele
let it;
function* getNumbers(times) {
if (times <= 0) {
it.throw(new Error("times must be greater than 0"));
}
for (let i = 0; i < times; i++) {
yield i;
}
}
it = getNumbers(3);
it.next();
let it;
function* getNumbers(times) {
if (times <= 0) {
throw new Error("times must be greater than 0");
}
for (let i = 0; i < times; i++) {
yield i;
}
}
it = getNumbers(3);
it.next(); // { value: 0, done: false }