[英]ES6 yield* - only yield one value at a time on referenced generator?
[英]ES6 Generator Yield inside arithmetic operation
当我定义了这种生成器时
function *process() {
let value = 4 * (yield 42)
console.log(value)
}
然后运行它:
let it = process()
it
变量获取处于暂停状态的迭代器。 然后我打电话
it.next()
运行发电机的主体直到yield
声明。 然后我再次调用.next()
以恢复生成器功能,将10作为参数传递给它
it.next(10)
这是迭代器中的最后一个yield
,据我所知,第二个.next()
调用使用10
将10
代替yield
,结果为4 * (10 42)
,计算得出的结果是控制台产量Uncaught SyntaxError: Unexpected number
,但是运行代码时
function *process() {
let value = 4 * (yield 42)
console.log(value)
}
let it = process()
it.next()
it.next(10)
结果为40
。
从第二个.next(10)
调用之后的那一刻起,该如何解释? 为什么要记录40
?
EURECA! yield 42
表示在第一个.next()
调用中,我们将收到{value: 42, done: false}
作为结果(如问题末尾的图像所示),因此基本上,它用作return语句,以及何时我们第二次调用.next(10)
,代码中不再有yield 42
,但是我们用10
代替了所有yield 42
。
我相信描述这的文档中的一章是this ,即算法的第10步:
使用NormalCompletion(value)作为挂起genContext的操作的结果,恢复genContext挂起的评估。 令result为恢复的计算返回的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.