如何在Node JS中使用事件?

时间:2014-12-02 17:55:53

标签: javascript node.js express

我想知道使用事件在ExpressJS中的函数之间进行通信是否是一个好习惯。如果是,我如何在我的emit事件中发送参数?

2 个答案:

答案 0 :(得分:4)

这取决于。如果您在功能之间进行真正的异步通信,则需要考虑事件。 “真正”意味着使用setInterval,nextTick或syncIO中断被调用函数的执行线程(仅使用回调不一定是异步的)。如果不是这种情况,则不能使用事件,因为在调用函数可以在其上设置侦听器之前它们将被发出。

事件需要在被调用函数中进行更多工作 - 您需要创建一个EventEmitter实例并将其传回,被调用者将在其上设置一个侦听器。然后你的被叫函数发出事件。

如果你的函数之间的关系是一对一的(请求/回复),结果是成功/失败,那么回调就更容易了。

如果您的异步调用函数可以多次发出事件或者有多个结果,那么事件就是合适的。

至于论据,请查看文档:{​​{3}}

emitter.emit(event, [arg1], [arg2], [...])  

答案 1 :(得分:0)

API参考:http://nodejs.org/api/events.html#events_emitter_emit_event_arg1_arg2

以下是一个例子:

var emitter = new EventEmitter();
emitter.on('stack', function(name, message) {
   console.log("I got the event", name, message);
});
emitter.emit('stack, 'eventName', 'I like arguments');