结合JavaScript生成器和类

时间:2018-06-19 19:31:38

标签: javascript ecmascript-6 generator redux-saga

我想实例化一个在构造函数中接收生成器的类。

我找不到有关如何完成此操作的任何文档。

从广义上讲,我正在使用Redux-Saga,并试图通过类对异步逻辑进行概括。

class GeneratorClass {
    constructor(generator) {
        this.func = generator
    }
}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以简单地将生成器的标识符传递给构造函数:

class GeneratorClass {
  constructor(generator) {
    this.func = generator
  }
}

function* generator() {
  yield 1;
  yield 10;
}

myGenerator = new GeneratorClass(generator)

console.log(myGenerator.func().next())

您还可以使用包装函数将参数传递给生成器:

class GeneratorClass {
  constructor(generator, start) {
    this.func = generator(start)
  }
}

function generator(i) {
  return function*() {
    yield i + 1;
    yield i + 10;
  }
}

myGenerator = new GeneratorClass(generator, 10)

console.log(myGenerator.func().next())