У вас есть состояние гонки.Порядок может быть определен неправильно, однако вы запускаете событие до того, как подключен слушатель.
Следующее не работает (например):
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)