如何在 nodejs express 中获取发射器 运行?

How to get emitter running in nodejs express?

我有这样的代码:

import EventEmitter from 'events'
const server = express();

server.get('/view', async function (req, res) {
const emitter = new EventEmitter()
emitter.emit('done')
 emitter.on('done', () => {
    console.log('testing is running')
  })
})

但是在 运行 上我根本没有得到 'testing is running'。 如何让发射器与 express 一起工作?

您在安装事件处理程序之前发出事件,因此您错过了事件。

更改顺序:

import EventEmitter from 'events'
const app = express();

app.get('/view', async function (req, res) {
    const emitter = new EventEmitter()
    emitter.on('done', () => {
        console.log('testing is running');
    })
    emitter.emit('done');
});

EventEmitter 事件是同步处理的,因此您必须在事件发生之前安装任何侦听器,否则您将错过该事件。

您也可以在这个独立程序中尝试:

import EventEmitter from 'events'
const emitter = new EventEmitter()
emitter.on('done', () => {
    console.log('testing is running');
})
emitter.emit('done');