TypeError: генератор уже выполняется
Исключение JavaScript "TypeError: already executing generator" возникает, когда генератор возобновляется с помощью одного из его методов (такого как next()) во время выполнения самого тела функции-генератора.
Сообщение
TypeError: Generator is already running (V8-based) TypeError: already executing generator (Firefox) TypeError: Generator is executing (Safari)
Тип ошибки
Что пошло не так?
Методы генератора, next(), return() и throw(), предназначены для продолжения выполнения функции-генератора, когда она приостановлена после выражения yield или перед первым оператором. Если вызов одного из этих методов выполняется во время работы функции-генератора, выбрасывается ошибка. Если вы хотите вернуть или выбросить значение внутри функции-генератора, используйте оператор return или оператор throw, соответственно.
Примеры
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 }
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Already_executing_generator