Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 事件发射器未捕获事件_Javascript_Node.js_Eventemitter - Fatal编程技术网

Javascript 事件发射器未捕获事件

Javascript 事件发射器未捕获事件,javascript,node.js,eventemitter,Javascript,Node.js,Eventemitter,我的emitter.js文件 const EventEmitter = require('events').EventEmitter; var event = new EventEmitter(); export default event 我有另一个文件,其中我emit我在api路由中遇到的事件 import Emitter from '../../config/emitter' Emitter.emit('RIDING_STATUS', socketdriver) 在这里,我在inde

我的emitter.js文件

const EventEmitter = require('events').EventEmitter;
var event = new EventEmitter();
export default event
我有另一个文件,其中我
emit
我在api路由中遇到的事件

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")
})
但问题是上面的事件并没有在我的index.js中触发
骑行状态


谁能告诉我我做错了什么。

你有比赛条件。顺序可能没有很好的定义,但是您正在连接侦听器之前触发事件

以下情况不起作用(例如):

要确保事件仅在连接侦听器后发出,请将其置于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)
import Emitter from '../../config/emitter'

setTimeout(()=>Emitter.emit('RIDING_STATUS', socketdriver),0)