我正在尝试从数组构建生成器函数。最简单的例子是:
const array = [1,2,3,4]
function * createGenerator () {
array.map(function(elem){
yield elem
}
}
我希望:
function * createGenerator () {
yield 1
yield 2
yield 3
yield 4
}
此外,如果我想添加这样的开关语句:
function processServerActions (array) {
for (let elem in array) {
switch(elem) {
case 1:
yield 1111
case 2:
yield 22222
case 3:
yield 333333
yield 444444
case 4:
yield 55555
}
}
}
但是没有用。我错过了什么?
谢谢!
答案 0 :(得分:3)
回调只能返回回调。为了产生生成器函数,yield
必须在函数内部,但在嵌套回调之外。
最好使用for ... of
来产生一个值。
function* createGenerator() {
for (let elem of array){
yield elem;
}
}
const array = [1,2,3,4],
c = createGenerator();
console.log([...c]);

for (let elem of array)
需要of
而不是in
。
function* createGenerator() {
for (let elem of array) {
switch(elem) {
case 1:
yield 1111;
break;
case 2:
yield 22222;
break;
case 3:
yield 333333;
yield 444444;
break;
case 4:
yield 55555;
}
}
}
const array = [1,2,3,4],
c = createGenerator();
console.log([...c]);