我想知道使用事件在ExpressJS中的函数之间进行通信是否是一个好习惯。如果是,我如何在我的emit事件中发送参数?
答案 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');