Javascript Node.js-发出vs函数调用

Javascript Node.js-发出vs函数调用,javascript,node.js,Javascript,Node.js,我一直在节点中使用EventEmitter,遇到了某些情况,我无法决定是将值发射回“EventEmitter对象”并让它侦听它们,还是简单地调用函数来设置值 我创建了一个简单的例子来解释我的观点 myTimer函数只是每秒发出最喜欢的数字。它的值可以通过changenumber函数调用或在changenumber事件中更改 下面的代码使用myTimer函数并侦听其“最喜爱的号码”事件。 可以通过函数调用或在myTimer对象上发出“change number”(更改号码)来设置收藏夹号码 var

我一直在节点中使用EventEmitter,遇到了某些情况,我无法决定是将值发射回“EventEmitter对象”并让它侦听它们,还是简单地调用函数来设置值

我创建了一个简单的例子来解释我的观点

myTimer函数只是每秒发出最喜欢的数字。它的值可以通过changenumber函数调用或在changenumber事件中更改

下面的代码使用myTimer函数并侦听其“最喜爱的号码”事件。 可以通过函数调用或在myTimer对象上发出“change number”(更改号码)来设置收藏夹号码

var myTimer = require('./myTimer.js');
var timer = new myTimer();

timer.on("favourite number", function(number) {
    console.log(number);
});

timer.changenumber(102); // change number using function.
timer.emit('changenumber', 102); // change number by emitting number
这两种方法似乎都有效,但是如果复杂性增加,使用emit发送回值似乎会变得很难遵循。我在我的项目中一直在使用socket.io,看到它基本上在客户端和服务器端的同一个对象上发射和侦听,所以可能这就是我感到困惑的地方


是否存在使用一种方法比使用另一种方法更合适的情况?

一些可能会消除一些混淆的注释:

  • 事件是指事情发生的时间。(例如,发生了
    错误
    数据
    可用)

  • 在几乎所有情况下,事件都应该从对象本身内部发出。对象之外的东西调用
    .emit()
    是没有意义的。仅从内部调用
    .emit()


在函数示例
changenumber
中,您肯定应该在此处使用函数。当您调用
timer.changenumber()
时,您正在告诉计时器更改其号码。当您调用
timer.emit('changenumber')
时,您实际上是代表计时器说号码已经更改了。更糟糕的是,计时器在自言自语。

一般来说,事件是指当多个事件需要知道某个事件发生时发生的事件。如果只需要提醒代码的一部分,那么函数调用更合适。
var myTimer = require('./myTimer.js');
var timer = new myTimer();

timer.on("favourite number", function(number) {
    console.log(number);
});

timer.changenumber(102); // change number using function.
timer.emit('changenumber', 102); // change number by emitting number