Documentación offline JavaScript main

TypeError: already executing generator

main Documentación oficial Licencia CC-BY-SA-2.5Descargado el 2026-08-02

En esta página

The JavaScript exception "TypeError: already executing generator" occurs when a generator is continued using one of its methods (such as {{jsxref("Generator/next", "next()")}}) while executing the generator function's body itself.

Message#

TypeError: Generator is already running (V8-based)
TypeError: already executing generator (Firefox)
TypeError: Generator is executing (Safari)

Error type#

{{jsxref("TypeError")}}

What went wrong?#

The generator's methods, {{jsxref("Generator/next", "next()")}}, {{jsxref("Generator/return", "return()")}}, and {{jsxref("Generator/throw", "throw()")}}, are meant to continue the execution of a generator function when it's paused after a yield expression or before the first statement. If a call to one of these methods is made while executing the generator function, the error is thrown. If you want to return or throw within the generator function, use the {{jsxref("Statements/return", "return")}} statement or the {{jsxref("Statements/throw", "throw")}} statement, respectively.

Examples#

```js example-bad 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();

```js example-good
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 }

See also#