我的emitter.js文件
const EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
export default event
我有另一个文件,其中我在api路由中emit
事件。
import Emitter from '../../config/emitter'
Emitter.emit('RIDING_STATUS', socketdriver)
在这里,我在index.js上看到了这个事件
import Emitter from '../config/emitter'
Emitter.on('RIDING_STATUS', async(data) => {
console.log("Caught the event")
})
但问题是上面的事件并没有在我的RIDING_STATUS
index.js中触发。
有人能告诉我我在这里做错了什么吗?
发布于 2019-02-22 09:40:23
你有种族问题。顺序可能没有很好的定义,但是在附加侦听器之前会触发一个事件。
以下内容不起作用(例如):
const EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
event.emit('RIDING_STATUS');
//will never be triggered as the emit has already been fired.
event.on('RIDING_STATUS', async(data) => {
console.log("Caught the event")
});
若要确保事件仅在连接侦听器之后发出,请将其放入setTimeout中。
const EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
//Delay the emit event until after all setup code is complete
setTimeout(()=>event.emit('RIDING_STATUS'),0);
event.on('RIDING_STATUS', async(data) => {
console.log("Caught the event")
});
setTimeout确保在激发事件发射器之前完成所有设置代码。
因此,要引用上面的代码,中间的代码块应该是:
import Emitter from '../../config/emitter'
setTimeout(()=>Emitter.emit('RIDING_STATUS', socketdriver),0)
https://stackoverflow.com/questions/54823981
复制相似问题