这是一个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'的值。然后,您需要另一个yieldreturn,以将自定义值提供给生成器的使用者。这是代码:

function *Gen() {
    var input1 = yield 'output1'
    return input1
}

var gen = Gen()

gen.next();
gen.next('input1').value // return 'input1'

10-04 22:13
查看更多