Open
Description
function* test() {
console.log("Started");
yield sleep(1234);
console.log("End");
yield sleep(2345);
console.log("============");
};
var gen = test();
function sleep(ms) { setTimeout(() => gen.next(), ms || 1); }
gen.next();
// 等待完成后,test 变成普通函数了,会立即执行,不需要 gen.next();
gen = test();
上述代码执行 gen.next() 后,结果是正确的。但如果再次执行 gen = test(); 结果就不对了,生成器函数成了普通函数,还没等 gen.next() 就立即执行了,而且 yield 等待也没生效。
Metadata
Metadata
Assignees
Labels
No labels