路由器(发射器)和处理器(监听器)中的Node.js事件
node.js events in router(emitter) and handlers(listeners)
我需要在路由器中生成自定义事件,这将基于来自前端的数据。就像如果前端对象有handle_hello_world
一样,那么路由器应该为handle_hello_world
发出一个事件,这样相应的事件侦听器就可以被唤醒并处理请求。这个监听器的回调应该再次返回到路由器,然后再返回到前端。
我尝试了node.js中的普通事件发射器,它将在相同的作用域文件中发出和接收事件。但是,我未能再次从router -> handler -> router进行所需的链接。
对事件、流、培根、事件总线、发布者-订阅者、套接字有任何帮助。我在节点事件方面的知识不是很丰富,所以使用Io等非常方便。
使用Express和node eventemitter你可以这样做:
var emitter = require('events').EventEmitter;
emitter.on('myEvent', function(cb) {
//do something
var data = 'some data';
cb(data);
});
emitter.on('myEvent', function(cb) {
//do something
var data = 'other data';
cb(data);
});
app.use('/path', function(req, res, next) {
var eventName = 'myEvent';
var listenersCount = EventEmitter.listenerCount(emitter, eventName);
emitter.emit(eventName, function(dataFromEventHandler) {
listenersCount--;
if (!listenersCount) {
//all listeners completed
//do something else...
next();
}
})
});
eventName可以从req中获得。Body或request .params。这是Express docs http://expressjs.com/4x/api.html#req.params
相关文章:
- 在索引.html和应用.js [node.js] 之间共享变量
- JS(node.js)而循环不起作用
- 如何使用 JS (Node.js) 防止 HTTP 查询中允许使用 UTF8 字符串
- Angular JS & Node Webkit Routing
- 当作为脚本运行时.js Node中“this”的上下文是什么
- JS/Node:- 使用 node.io 选择标记
- JavaScript 如何让节点在返回 node.js/Node-RED 之前等待
- 处理快速连续的函数调用 - Javascript / underscore.js / node.js
- 如何在一台服务器中运行不同的.js文件.js NODE JS中的文件
- JS node-mysql bools 表现得很奇怪
- Node.js+Node Webkit+基于Node串行端口的应用程序-这可能吗
- 如何在Express.js/Node.js中检查查询字符串是否有值
- Express.Js, Node.Js, MongoDB Questions
- 在JS/Node中,当多个人编辑相同的记录时,如何避免数据冲突?有图案吗
- 服务器端js(node.js)上的同步
- 将参数从jade发送到js/node
- angular.js+node.js/electron中的Promise;不起作用
- 是否有可能确定我的应用程序的aws实例使用js/node aws-sdk
- Image Magick模块抛出奇怪的错误(Express js Node js)
- 用JS (Node.js)读取文本文件'