Spec-Zone.ru › JavaScript

TypeError: генератор уже выполняется

Исключение JavaScript "TypeError: already executing generator" возникает, когда генератор возобновляется с помощью одного из его методов (такого как next()) во время выполнения самого тела функции-генератора.

Сообщение

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

Тип ошибки

TypeError

Что пошло не так?

Методы генератора, 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 }

См. также

  • Итераторы и генераторы
  • Протоколы итерации
  • function*
  • Generator

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API