我该怎么办?
var some=function(){
process.EventEmitter.call(this);
var answer=this.emit('test');
}
...
var test=some();
test.on('test'){
return 'answer';
}
程序和模块之间的消息传递可能存在其他功能吗?
答案 0 :(得分:3)
来自Felix's Node.js Style Guide。 FelixGeisendörfer是早期node.js的核心贡献者。
我强烈建议你永远不要从里面听自己班级的事件。 物体观察自然是不自然的。它经常导致不受欢迎的暴露 实施细节,使您的代码更难以遵循。
Node的内置EventEmitter实施,特别是其#emit
method文档,说:
使用提供的参数按顺序执行每个侦听器。
如果事件有侦听器,则返回
true
,否则返回false
。
因此,如果您希望从此实现继承,则行为不可行(当然,除非您覆盖emit
行为)
正如@vkurchatkin在评论中指出的那样,如果有多个侦听器连接到发射器,应该是什么行为?
如果你只需要一个监听器,返回一些东西,也许你应该“扩展”你的基础“ class ”并覆盖一个带有所需实现的方法,或修改所需实例上的所需函数,或其他任何函数。
恕我直言,你的方法不正确,你应该研究一下并重新考虑它。