[英]Event emitter doesn't emit events
我有如下模块,我想发出这样的事件:
文件aa.js
var EventEmitter = require("events").EventEmitter,
eventEmitterIns = new EventEmitter();
var preProcess = function (cb) {
...
var start = function () {
....
}).catch(function (err) {
//-------------HERE I EMIT THE EVENT-----------
eventEmitterIns.emit('test');
}
}
}
module.exports = {
preProcess: preProcess,
eventEmitterIns: eventEmitterIns
};
现在,当我执行以下操作时,我希望在其他模块中捕获此错误事件,但它对我不起作用:
bb.js
var invokeAppEvents = require('../controller/aa');
invokeAppEvents.eventEmitterIns.on('test', function () {
debugger;
}
);
如果我放置断点,它不会在调试器中停止; 我怎样才能克服这个?
调用 catch 块内的代码!
我应该在 aa.js 中导出什么,在 bb.js 中我应该需要什么?
您必须调用preProcess()
和内部start()
函数来获取您的事件。 例子:
aa.js
var EventEmitter = require("events").EventEmitter;
var eventEmitterIns = new EventEmitter();
var preProcess = function (cb) {
var start = function () {
Promise.reject('error...')
.catch(function (err) {
eventEmitterIns.emit('test', err);
});
}
start(); // << start() be must called somewhere
}
module.exports = {
preProcess: preProcess,
eventEmitterIns: eventEmitterIns
};
bb.js
var invokeAppEvents = require('./aa');
// preProcess() must be called so start() can run
invokeAppEvents.preProcess();
invokeAppEvents.eventEmitterIns.on('test', function (data) {
console.log('test event received: ' + data);
});
正如预期的那样,这输出:
收到测试事件:错误...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.