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

mur*_*lai 10 events node.js

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

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

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

小智 22

你可以设置这样的事件

app.on('event:user_created', callback);
Run Code Online (Sandbox Code Playgroud)

然后你可以发射它们

app.emit('event:user_created', data);
Run Code Online (Sandbox Code Playgroud)

express.js使用EventEmitter.

  • 实际上是`app`在**connect**框架中扩展了`EventEmitter`,**express**扩展了。[connect.js@68](https://github.com/senchalabs/connect/blob/master/lib/connect.js#L68) `utils.merge(app, EventEmitter.prototype);` (2认同)

mjs*_*mjs 7

您可能想要创建一个EventEmitter对象,并调用emit()它.


小智 6

我刚刚遇到这个问题,我想投入 2 美分,专门回答路易斯。

在 Express 中,如果您希望 'app' 实例侦听自定义事件,您可以执行以下操作:

app.on('testEvent', function () {
  return console.log('responded to testEvent');
});

app.get('/test', function (req, res) {
  app.emit('testEvent');
  return res.status(200).end();
});
Run Code Online (Sandbox Code Playgroud)

然后当该路由被命中时,您会在控制台中看到响应。当然,您可以根据需要实现它。