【问题标题】:Construct generator function from array从数组构造生成器函数
【发布时间】:2017-03-17 13:30:12
【问题描述】:

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

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

}

但是不工作。我错过了什么?

谢谢!

【问题讨论】:

  • 弹出几个语法错误...

标签: javascript asynchronous generator yield


【解决方案1】:

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

【讨论】:

  • 太好了,如果我想添加一个 switch 语句,根据我从数组中得到的数字产生一些其他的东西? (我编辑了问题以显示有关此的更多详细信息)
猜你喜欢
  • 2023-03-15
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 2019-04-16
  • 2016-12-16
  • 2013-07-25
  • 1970-01-01
  • 2023-01-12
相关资源
最近更新 更多