TypeError: already executing generator
Ngoại lệ JavaScript "TypeError: already executing generator" xảy ra khi một generator được tiếp tục bằng một trong các phương thức của nó (chẳng hạn như next()) trong khi đang thực thi thân hàm generator.
Thông báo
TypeError: Generator is already running (V8-based) TypeError: already executing generator (Firefox) TypeError: Generator is executing (Safari)
Loại lỗi
TypeError
Nguyên nhân?
Các phương thức của generator, next(), return(), và throw(), được thiết kế để tiếp tục thực thi hàm generator khi nó đang tạm dừng sau biểu thức yield hoặc trước câu lệnh đầu tiên. Nếu một trong những phương thức này được gọi trong khi đang thực thi hàm generator, lỗi sẽ được ném ra. Nếu bạn muốn return hoặc throw bên trong hàm generator, hãy sử dụng câu lệnh return hoặc câu lệnh throw tương ứng.
Ví dụ
js
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
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 }