我想知道是否使用事件在ExpressJS内的函数之间进行通信是一个好习惯?如果是,我怎么能发送我的发射事件的参数?如何通过Node JS使用事件?
回答
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');
这取决于。如果你在功能之间有真正的异步通信,那么事件是需要考虑的事情。 “真正”意味着调用函数的执行线程被setInterval,nextTick或syncIO中断(仅使用回调不一定是异步)。如果不是这种情况,则不能使用事件,因为它们将在您的调用函数可以设置侦听器之前发出。
事件在被调用的函数中需要更多的工作 - 您需要创建一个EventEmitter实例并将其传回,在这个实例上,被调用者将设置侦听器。然后你的被调用函数发出事件。
如果你的函数之间的关系是一对一的(请求/回复),并且结果是成功/失败,那么比回调更容易。
如果你的异步调用函数可以多次发射事件或者有多个结果,那么事件就非常适合。
至于参数,请看文档:http://nodejs.org/api/events.html
emitter.emit(event, [arg1], [arg2], [...])
谢谢你的解释。它确实使事情更加清晰。现在最后一个问题仍然存在。事件发射器对象可以是唯一的(例如全局变量),或者每次我想发出事件时都可以创建一个。 – user2422940 2014-12-03 08:54:43
每次您想要发出事件时,都不需要创建EventEmitter的新实例。您可以传递对象并在代码的任何部分发出事件。 EventEmitter是一个调解函数之间通信的对象 - 事件可以在任何地方被监听和发送。 – YuraA 2014-12-03 15:33:41
- 1. js,如何通过点击事件?
- 2. 如何通过JS代码wireup JS事件处理
- 3. 通行证鼠标事件通过使用JS点击()
- 4. node-js事件循环和范围
- 5. 如何通过硒调用JS文件
- 6. HTTPS使用Node Js呈现html文件
- 7. 使用Node js的Swagger文件托管
- 8. 如何通过使用角度JS
- 9. 通过Express/Node编辑从HTML到MongoDB的配置文件JS
- 10. 在前端使用Node JS
- 11. 如何通过JS
- 12. 如何使用JS触发用户左侧事件事件
- 13. 使用Backbone js Node js和MySQL?
- 14. Cloudkit JS && Node JS
- 15. 如何通过使用MongoDB Node驱动程序的id找到?
- 16. 如何在socket.io和node js上保护用户的“通道”?
- 17. 如何通过onclick事件禁用SmartyStreets/LiveAddress事件
- 18. 使用Node的请求模块通过REST API上传文件
- 19. 如何通过角JS
- 20. JS - 如何通过关键
- 21. 如何通过URL JS
- 22. 通过XamlReader使用事件/命令
- 23. 如何使用mocha-phantomjs测试Node js应用程序
- 24. 如何使用Gulp来运行Node JS应用程序?
- 25. 如何通过Button onclick事件使用“takeStringValueFrom”?
- 26. 如何通过Runnable修改事件
- 27. 如何为IClipboardStatics事件通过WRL
- 28. 如何通过单击事件document.getElementById(“someid”)
- 29. 如何绑定事件通过jQuery的
- 30. 如何使用Throttle过滤事件
什么是“功能之间的沟通”是什么意思? – 2014-12-02 18:00:29
大多数JavaScript实现都基于事件循环(nodejs特别基于事件循环) - 所以使用事件绝对是一些任务的良好实践 - 您可以更具体一些并提供代码示例。 – Soren 2014-12-02 18:01:39
不幸的是我不能提供I代码示例。但我可以更多地解释我的想法。我正在考虑使用事件的原因是这样的。当用户连接到我的应用程序时,必须触发一个事件。此事件包含用户信息(id,名称和其他凭证)。该事件将调用在用户重定向到其主页时在后台运行的功能。 – user2422940 2014-12-03 08:50:59