这是一个ES6生成器:
function *Gen() {
var input1 = yield 'output1'
}
var gen = Gen()
gen.next('input1').value // return 'output1'
gen称为第一次,返回
output1
,但变量input1
不等于传入的'input1'
,input
的值实际上是'input2',第二次称为next('input2')
我的问题是如何访问
input1
,这是下一次首次调用,类似于:function *Gen() {
var input 1 = param1
var input2 = yield 'output1'
}
最佳答案
当您获得生成器时,您没有yield
,您可以将value插入(位于生成器函数的开头)。您需要通过触发不带任何参数的yield
来触发生成器并到达第一个gen.next()
。此时,您可以使用yield
,并且可以通过gen.next('input1')
推送您的值,从而有效地将表达式yield 'output1'
替换为传递给next
-'input1'的值。然后,您需要另一个yield
或return
,以将自定义值提供给生成器的使用者。这是代码:
function *Gen() {
var input1 = yield 'output1'
return input1
}
var gen = Gen()
gen.next();
gen.next('input1').value // return 'input1'