我有一个包含大量嵌套回调的巨型函数。我想让它更清洁,更容易处理。所以,我正在考虑使用自定义事件监听器
就像,当函数完成时,在回调中,它只是发出一个事件,而不是放入一大块代码,然后监听器就会运行。
那么,如何在node.js中做到这一点?我仍然在寻找一个很好的例子来指导我。
答案 0 :(得分:21)
您可以设置此类活动
app.on('event:user_created', callback);
然后你可以发射它们
app.emit('event:user_created', data);
express.js 使用EventEmitter
。
答案 1 :(得分:7)
您可能想要创建一个EventEmitter对象,并在其上调用emit()
。
答案 2 :(得分:4)
我刚刚遇到这个问题,我想以2美分筹码,特别回应路易斯。
在Express中,如果你想要“应用程序”。要侦听自定义事件的实例,您可以执行以下操作:
app.on('testEvent', function () {
return console.log('responded to testEvent');
});
app.get('/test', function (req, res) {
app.emit('testEvent');
return res.status(200).end();
});
然后,当该路线被击中时,您将在控制台中看到响应。当然,你可以按照自己的意愿实现它。
答案 3 :(得分:0)
Node.js“事件”模块和“ EventEmitter”模块促进了Node中对象之间的通信。 EventEmitter模块是Node异步事件驱动架构的核心。这是创建自定义事件并发出它们的方法:
const EventEmitter = require('events');
const myEmitter = new EventEmitter();
//Event Listener
const EventListenerFunc = () => {
console.log('an event occurred!');
}
//Registering the event with the listener
myEmitter.on('eventName', EventListenerFunc);
//Emitting the event
myEmitter.emit('eventName');