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
你能从闭包中产生吗?
// 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