【发布时间】:2017-01-04 23:40:44
【问题描述】:
通常,我会这样写代码:
//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;
}
}
}
所有这两种方法似乎都是错误的答案。那么如何在类中正确编写生成器函数呢?
【问题讨论】:
-
“所有这两种方法似乎都是错误的答案”---这是什么意思?您在类中定义生成器函数的方式与“普通”生成器函数相同。
-
@zerkms 你能举个例子吗?当我尝试这样做时,它会产生语法错误。
-
您的代码(第一个示例中的类定义)在语法上是正确的,并且运行时没有语法错误。
-
你需要使用不同的变量名,比如
var reply = new Reply(); -
@Bergi,这个问题不是引用问题的重复,这个是关于分类的,另一个是关于对象文字的