从数组构造生成器函数

Construct generator function from array

本文关键字:函数 数组      更新时间:2023-09-26

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

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

但不起作用。我错过了什么?

谢谢!

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