如何在node.js(express.js)中创建自定义事件监听器?

时间:2011-04-21 01:33:57

标签: events node.js

我有一个包含大量嵌套回调的巨型函数。我想让它更清洁,更容易处理。所以,我正在考虑使用自定义事件监听器

就像,当函数完成时,在回调中,它只是发出一个事件,而不是放入一大块代码,然后监听器就会运行。

那么,如何在node.js中做到这一点?我仍然在寻找一个很好的例子来指导我。

4 个答案:

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