javascript:如何使用生成器作为类方法

时间:2016-11-30 13:32:39

标签: javascript node.js ecmascript-6

我的班级看起来像这样:

class Test {
  constructor() {

  }

  *test() {
    console.log('test');
    let result = yield this.something();
    return result;
  }

  something() {
    console.log('something');
    return new Promise((resolve, reject) => {
      resolve(2);
    });
  }
}

但是,当我从Test创建对象并调用test()方法时,我无法获得预期的结果......

let test = new Test();
console.log(test.test()); // {}

以为它会返回2

也没有显示日志。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:3)

它运作正常。您需要通过测试方法调用返回值的next()。

let test = new Test();
console.log(test.test().next());

输出

test
something
{ value: Promise { 2 }, done: false } 

通过调用test.test(),您将创建新的生成器实例。然后你应该在创建的实例上调用next()函数来生成生成器屈服值。