Javascript 如何将事件与节点JS一起使用?

Javascript 如何将事件与节点JS一起使用?,javascript,node.js,express,Javascript,Node.js,Express,我想知道使用事件在ExpressJS?内的函数之间进行通信是否是一种良好的做法?。如果是,如何沿我的emit事件发送参数?API参考: 以下是一个例子: var emitter = new EventEmitter(); emitter.on('stack', function(name, message) { console.log("I got the event", name, message); }); emitter.emit('stack, 'eventName', 'I li

我想知道使用事件在ExpressJS?内的函数之间进行通信是否是一种良好的做法?。如果是,如何沿我的emit事件发送参数?

API参考:

以下是一个例子:

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');
API参考:

以下是一个例子:

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');

视情况而定。如果在函数之间有真正的异步通信,那么事件是需要考虑的。“true”表示被调用函数的执行线程被setInterval、nextTick或syncIO中断(仅使用回调不一定是异步的)。如果不是这样,则不能使用事件,因为在调用函数设置侦听器之前,事件将被发出

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

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

如果异步调用的函数可以多次发出事件,或者有多个结果,那么事件就是一个很好的选择

关于参数,请查看文档:


视情况而定。如果在函数之间有真正的异步通信,那么事件是需要考虑的。“true”表示被调用函数的执行线程被setInterval、nextTick或syncIO中断(仅使用回调不一定是异步的)。如果不是这样,则不能使用事件,因为在调用函数设置侦听器之前,事件将被发出

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

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

如果异步调用的函数可以多次发出事件,或者有多个结果,那么事件就是一个很好的选择

关于参数,请查看文档:


“函数间通信”是什么意思?大多数javascript实现都基于事件循环(nodejs特别基于事件循环)——因此,对于某些任务来说,使用事件无疑是一种很好的做法——您能否更具体一点,并提供一个代码示例。不幸的是,我无法提供I代码示例。但我可以解释更多我的想法。我考虑使用事件的原因如下。当用户连接到我的应用程序时,必须触发一个事件。此事件包含用户信息(id、名称和其他凭据)。当用户被重定向到其主页时,事件将调用在后台运行的函数。“函数间通信”是什么意思?大多数javascript实现都基于事件循环(nodejs特别基于事件循环)--因此,对于某些任务来说,使用事件绝对是一种很好的做法--您能否更具体一点,并提供一个代码示例。不幸的是,我无法提供代码示例。但我可以解释更多我的想法。我考虑使用事件的原因如下。当用户连接到我的应用程序时,必须触发一个事件。此事件包含用户信息(id、名称和其他凭据)。当用户被重定向到其主页时,事件将调用在后台运行的函数。感谢您的解释。它确实让事情变得更清楚了。现在我还有最后一个问题。事件发射器对象可以是唯一的(例如全局变量),也可以在每次要发出事件时创建一个。无需在每次要发出事件时创建EventEmitter的新实例。您可以在代码的任何部分传递对象并在其上发出事件。EventEmitter是一个调解函数间通信的对象-事件可以从任何地方监听和发出。感谢您的解释。它确实让事情变得更清楚了。现在我还有最后一个问题。事件发射器对象可以是唯一的(例如全局变量),也可以在每次要发出事件时创建一个。无需在每次要发出事件时创建EventEmitter的新实例。您可以在代码的任何部分传递对象并在其上发出事件。EventEmitter是一个调解函数之间通信的对象—事件可以从任何地方监听和发出。