通常,我写这样的代码:
//definition
exports.getReply = function * (msg){
//...
return reply;
}
//usage
var msg = yield getReply ('hello');
但是我如何在 es6 类中编写和使用生成器呢?我试过这个:
class Reply{
*getReply (msg){
//...
return reply;
}
*otherFun(){
this.getReply(); //`this` seem to have no access to `getReply`
}
}
var Reply = new Reply();
Reply.getReply(); //out of class,how can I get access to `getReply`?
我也试过:
class Reply{
getReply(){
return function*(msg){
//...
return reply;
}
}
}
所有这两种方法似乎都是错误的答案。那么如何在类中正确编写生成器函数呢?
原文由 Seven 发布,翻译遵循 CC BY-SA 4.0 许可协议
编辑:添加更多示例。
您的
class
定义(几乎)正确。错误出现在实例化中var Reply = new Reply();
。这会尝试重新定义分配给类名的变量。另外generator
功能预计yield
一些东西。我详细阐述了一些 OP 代码来展示工作示例。2019 年 1 月 12 日更新
正如@BugBuddy
for..of
所建议的那样,循环看起来更好(但并非在所有情况下都有效)。查看代码段中的更新行。