ES6/ES2015 在函数闭包内产生收益*

ES6/ES2015 yield within closure in a function*

你能从闭包中产生吗?

// I want the following to work but instead I get:
//   Uncaught SyntaxError: missing ) after argument list(…)

function* test() {
    yield 1;
    [2,3].map(x => yield x);
    yield 4;
}

var gen = test();
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3
console.log(gen.next().value); // 4

您应该使用 yield* 将控制器传递给另一个可迭代对象 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/yield*

您还尝试在 non-generator 函数中 yield,但您做不到。只需使用 return

function* test() {
    yield 1;
    yield* [2,3].map((x) => {return x});
    yield 4;
}

var gen = test();
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3 
console.log(gen.next().value); // 4