我可以将参数传递给ES6生成器功能

mko*_*mko 8 javascript generator ecmascript-6

这是一个ES6生成器:

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

var gen = Gen()

gen.next('input1').value // return 'output1'
Run Code Online (Sandbox Code Playgroud)

gen称为1st time,返回output1但变量input1不等于'input1'传入的值,input实际值是'input2',第二次next('input2')调用

我的问题是如何访问input1下次调用的第一次,例如:

function *Gen() {
    var input 1 = param1
    var input2 = yield 'output1'
}
Run Code Online (Sandbox Code Playgroud)

小智 20

当您获得没有yields 的发生器时,您可以将值推到(您处于生成器函数的开头).您需要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'
Run Code Online (Sandbox Code Playgroud)

  • `当您获得生成器时,您没有收益,您可以将值推送到(您在生成器函数的开头)` +1 (2认同)

mko*_*mko 6

大约发生很大的文章回答我的问题,输入1已经被扔掉了,有没有办法来访问它。奇怪但真实

  • 请在您的答案中包含文章的相关部分,否则如果链接断开,它将不再具有任何价值。 (2认同)