node.js事件发射器是否必须绑定到自定义对象才能有效地使用它们?

时间:2014-04-02 21:24:21

标签: javascript node.js eventemitter

在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处理所有事件(在您想要的任何地方发出它们,例如在您的自定义对象中)。将事件发射器原型绑定到您自己的自定义对象/函数的原因是什么?

2 个答案:

答案 0 :(得分:1)

这样做没有天生的错误,但是如果你打算走ee1的道路,我建议你研究一下Event Aggregator Pattern 。通过一些仔细的计划,您应该能够通过单一事件总线避免一些陷阱。

就个人而言,我总是更喜欢ee2做事的方式。我认为它使事情更有条理(封装)。

答案 1 :(得分:0)

我们的想法是您的对象 EventEmitter。使用您给出的姓名,可以执行以下操作:

ee2.on('some-event', ...);

同时也正常使用你的对象:

ee2.myOwnFunction();