【发布时间】:2015-12-03 11:38:15
【问题描述】:
我有一个简单的生成器函数
function *generate(arg) {
console.log(arg)
for(let i = 0; i < 3;i++) {
console.log(yield i);
}
}
然后我启动生成器并尝试在控制台中打印值:
var gen = generate('arg'); //doesn't print
gen.next('a'); // prints 'arg'
gen.next('b'); // prints 'b'
gen.next('c'); // prints 'c'
// ... nothing surprising later
第一个next() 调用的参数a 去哪儿了?有没有办法在生成器函数中使用它?
这是Babel REPL,您可以在其中看到该结果。
【问题讨论】:
-
第一个
next开始执行生成器。你不能使用你传递给它的值;它被扔掉了。除了undefined之外,您也不允许传递任何东西来明确这一点,但这可能已经改变,因为您没有收到 TypeError: wiki.ecmascript.org/doku.php?id=harmony:generators (请参阅内部方法下的 If state = “newborn”:send)。 -
好吧,如果在草稿版本中它被设计为抛出错误,我可以确定,这个参数不应该被生成器访问。感谢您的评论!
-
@minitech:我相信他们正在讨论一种如何访问 ES7 中第一次调用的参数的方法。
标签: javascript node.js generator ecmascript-6