我有一个巨大的功能,嵌套的回调很多。我想让它更清洁,更容易处理。所以,我正在考虑使用自定义事件侦听器如何在node.js(express.js)中创建自定义事件侦听器?
就像一个函数完成时,在回调中,而不是放置一大块代码,它只是发出一个事件,然后侦听器就会运行。
那么,如何在node.js中做到这一点?我仍然在寻找一个很好的例子来指导我。
我有一个巨大的功能,嵌套的回调很多。我想让它更清洁,更容易处理。所以,我正在考虑使用自定义事件侦听器如何在node.js(express.js)中创建自定义事件侦听器?
就像一个函数完成时,在回调中,而不是放置一大块代码,它只是发出一个事件,然后侦听器就会运行。
那么,如何在node.js中做到这一点?我仍然在寻找一个很好的例子来指导我。
您可能想要创建一个EventEmitter对象,并调用emit()
就可以了。
您可以设置这样的活动
app.on('event:user_created', callback);
然后你就可以发出他们
app.emit('event:user_created', data);
express.js使用EventEmitter
。
实际上,'app'在** express **框架中扩展了'EventEmitter'。 [[email protected]](https://github.com/senchalabs/connect/blob/master/lib/connect.js#L68)'utils.merge(app,EventEmitter.prototype);' – antitoxic 2012-10-07 17:05:56
因此, app'可以作为应用程序范围的调度 – 2013-06-26 19:58:23
这将采取一个错误的对象 - app.emit('event:foo',err,data) - 例如,如果我们返回数据库查询的结果? – starsinmypockets 2014-01-07 02:19:43
我刚刚遇到这个问题,我想在我的2美分中筹码,专门回应路易斯。
在快递,如果你想在“应用”的实例来监听,你会做一些像自定义事件:
app.on('testEvent', function() {
return console.log('responded to testEvent');
});
app.get('/test', function (req, res) {
app.emit('testEvent');
return res.status(200).end();
});
然后当路由被打,你会看到在控制台响应。当然你可以按照你的意愿实现它。
相关http://stackoverflow.com/questions/4903154/how-do-i-avoid-deeply-nested-code-in-node-js? – 2011-04-21 02:12:53
谢谢。我会尝试。哪一个更好? – murvinlai 2011-04-21 18:10:45
第一个与你的问题最相关。 – 2011-04-22 11:15:08