node.js事件发射器是否必须绑定到自定义对象才能有效地使用它们?
在node.js中,为什么事件发射器的一些例子看起来很简单:
EventEmitter = require("events").EventEmitter; ee1 = new EventEmitter;
然后ee1被用来发送和收听事件。
还有一些例子是这样的:
EventEmitter = require("events").EventEmitter; util = require("util"); MyFunc = function () EventEmitter.call(this); } util.inherit(MyFunc, EventEmitter); ee2 = new MyFunc();
然后ee2被用来发射和听事件。
你可以使用ee1来处理所有的事件(无论你想要的地方,例如在你的自定义对象中)。 将事件发射器原型绑定到您自己的自定义对象/函数的原因是什么?
这样做本质上没有什么问题 ,但是如果您打算继续使用ee1
的path,我build议您查看事件聚合器模式 。 通过一些小心的计划,你应该能够避免单个事件总线的一些陷阱。
就个人而言,我一直喜欢ee2
的做事方式。 我认为它使事情更有组织(封装)。
这个想法是你的对象是一个EventEmitter
。 使用你的名字,这可以让你做这样的事情:
ee2.on('some-event', ...);
同时也正常使用你的对象:
ee2.myOwnFunction();