emit 之后 on不触发。 什么情况?
发布于 8 年前 作者 wdragon1983 4114 次浏览 来自 问答

写了一个类文件,继承了EventEmitter。 然后再此文件里面 用emit 和 on 可以触发。

但是我把这个类 export出去。 在socketio 的on事件中,调用这个类的一个方法,这个方法执行完毕后会emit一个事件,我在socketio的on回调函数里面 , on这个emit的事件。但是这个时间没有触发。这个是什么情况??

3 回复

var desInstance ={}; function Des() {//新建一个类 events.EventEmitter.call(this); } util.inherits(Des, events.EventEmitter);//使这个类继承EventEmitter

function getDesInstance(){ if(desInstance instanceof Des){ return desInstance; } desInstance = new Des(); return desInstance; }

Des.prototype.desEncrypt = function (param) { … this.emit(“encryptData”, ciph);//在此触发名为"encryptData"事件 }

exports.getDesInstance=getDesInstance;

以上是这个继承emit类的类。

var des = require(’./des’); var desInstance = des.getDesInstance();

socket.on(‘test’, function (data) { logger.info(’ recv pdu ', data); … desInstance.desEncrypt(param); desInstance.on(“encryptData”, function(data) { console.log(‘encryptData data: "’ + data + ‘"’); //此回调不会被执行 }) }); 以上是这个是 用emit类的类。

desInstance.on(“encryptData”, function(data) {
	console.log(‘encryptData data: "’ + data + ‘"’); //此回调不会被执行
});
desInstance.desEncrypt(param);

先绑事件再调用 。

@myhirra 噢 搞错了。没注意。刚写node 还是很难适应呀。。

回到顶部