[英]Node.js EventEmitter `on` event is not responding to `emit` actions
[英]Node.js EventEmitter not working on immediate emit
出现以下问题:
我有一个类save.js,它从EventEmitter继承事件。
它看起来像:
var util = require('util');
var EventEmitter = require('events').EventEmitter;
var save = function(pdf){
var self = this;
EventEmitter.call(self);
console.log(self);
self.emit('test', 'TEST!');
function doSomeDatabaseStuff() {
db.connect(function(err, connection) {
if ( err ) self.emit('error', err);
else {
self.emit('test', 'TEST!');
}
});
}
util.inherits(save, EventEmitter);
module.exports = save;
我启动它:
var saving = new save(pdf);
saving.on('sim', function(result){
console.log(result);
});
因此,奇怪的行为是:永远不会发出console.log(self)之后的第一个发出事件。 但是记录自我显示该类已经继承了EventEmitter功能。 所有其他事件均正确发出。 有什么提示吗?
EventEmitter
的emit
方法对所有当前注册的处理程序进行同步调用。
在尚未注册侦听器时调用console.log
之后的emit
。 这解释了为什么不调用此侦听器的原因。
如果你真的想在构造函数中发出一个事件像你这样在这里,你应该让这个emit
总是与异步
setImmediate(function() {
self.emit('test', 'TEST!');
});
或者您可以使用一个不活动的构造函数,以便在新构造的对象上配置和获取引用,然后使用一个.setup
或.init
方法启动该对象的事件活动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.