将收益率响应分配给变量

Neo*_*Neo 2 javascript generator

如何将yield的值分配给变量?

function *foo() {
    var x = yield "foo"
    console.log(x);
}

let bar = foo()
bar.next() // returns {value: "foo", done: false}

bar.next() // returns {value: undefined, done: true}
//console.log logs undefined
Run Code Online (Sandbox Code Playgroud)

我的理解是您可以为变量赋值。

我正在谷歌浏览器中试用安慰

Ber*_*rgi 6

您确实将结果值分配给yield变量就好了。只是它确实undefined在您对生成器的特定使用中返回了。yield表达式的结果是您传递给next调用的参数,但您没有传递任何内容。试试这个:

function* foo() {
    var x = yield "foo";
    console.log(x);
    return "baz";
}

var bar = foo();
bar.next();      // returns {value: "foo", done: false}
bar.next("bar"); // console.log logs "bar"
                 // returns {value: "baz", done: true}
Run Code Online (Sandbox Code Playgroud)