我的班级看起来像这样:
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
。
也没有显示日志。
我在这里做错了什么?
答案 0 :(得分:3)
它运作正常。您需要通过测试方法调用返回值的next()。
let test = new Test();
console.log(test.test().next());
输出
test
something
{ value: Promise { 2 }, done: false }
通过调用test.test(),您将创建新的生成器实例。然后你应该在创建的实例上调用next()函数来生成生成器屈服值。