8000 生成器函数第二次执行有问题 · Issue #784 · fibjs/fibjs · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
生成器函数第二次执行有问题 #784
Open
@rimifon

Description

@rimifon
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 等待也没生效。

下图是 fibjs(左)和 nodejs(右)的运行结果对比:
4992ecda7fb8009d14f3b5274f8f160

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0