function step(gen) { const it = gen(); let last; return function() { last = it.next(last).value; }; } function* foo() { a++; yield; b *= a; a = (yield b) + 3; } function* bar() { b--; yield; a = (yield 8) + b; b = a * (yield 2); } var a = 1; var b = 2; const s1 = step(foo); const s2 = step(bar); s2(); s2(); s1(); s2(); s1(); s1(); s2(); console.log(a, b); // 12 18
最后一步运行 s2() 的时候 a = 12 , b = 9 ,然后执行 b = a * 2 ,最后应该输出12 24才对啊
已解决
悬赏分:20
- 解决时间 2021-11-26 12:15
点赞 0反对 0举报 0
收藏 0
分享 0
回答1
最佳
-
你可以观察一下下面两种写法的区别。
// 交出句柄前就已经取了 a 的值 b = a * (yield 2); // 重新获得句柄后再获取 a 的值。 b = (yield 2) * a;
支持 0 反对 0 举报2021-11-26 04:57