箭头功能不起作用但匿名功能呢?

时间:2018-02-10 20:21:41

标签: javascript ecmascript-6 generator

我有以下代码

function coroutine(g) { 
    var it = g(); 
    return () => it.next.apply(it, arguments); 
    // also tried () => { return it.next.apply(it, arguments);
}

var run = coroutine(function* () { 
    var x = 1 + (yield); 
    var y = 1 + (yield); 
    yield (x + y);
});

以下测试已经执行。

run()
{value: undefined, done: false}
run(10)
{value: undefined, done: false}
run(30).value
"1function* () { var x = 1 + (yield); var y = 1 + (yield); yield (x + y);}1function* () { var x = 1 + (yield); var y = 1 + (yield); yield (x + y);}"

但是,最后run(30).value不应该返回42的值吗?

但是,在将箭头功能更改为旧的匿名功能后,它可以正常工作吗?

function coroutine(g) { 
    var it = g(); 
    return function() { return it.next.apply(it, arguments) }; 
}

0 个答案:

没有答案