从数组构造生成器函数

Construct generator function from array

我正在尝试从数组构建生成器函数。最简单的例子是:

    const array = [1,2,3,4]

    function * createGenerator () {
        array.map(function(elem){
            yield elem
        }
    }  

我希望:

function * createGenerator () {
        yield 1
        yield 2
        yield 3
        yield 4
    } 

此外,如果我想添加这样的 switch 语句:

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
        }
    }

}

但是没有用。我错过了什么?

谢谢!

回调只能return回调。为了产生生成器函数,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]);