gpt4 book ai didi

javascript - NodeJs 事件调用函数

转载 作者:行者123 更新时间:2023-11-28 18:40:42 25 4
gpt4 key购买 nike

实际上我正在尝试在事件发生后调用函数demandConnexion,但它对我有用,它告诉我“this.demandeConnexion不是一个函数”。我怎样才能让它工作?帮助,这是代码:

Serveur.prototype.demandConnexion = function(idZEP) {

if (this.ZP.createZE(idZEP))

{

console.log(' ==> socket : demande de creation ZE pour '+idZEP +' accepte');

}

else

{

console.log(' ==> socket : demande de creation ZE pour '+idZEP +' refuse');

}
};

Serveur.prototype.traitementSurConnection = function(socket) {

// console.log('connexion');

console.log(' ==> socket connexion');

// traitement de l'evenement DEMANDE DE CONNEXION D'UNE ZE

socket.on('connection', (function(idZEP) { this.demandConnexion(idZEP)

console.log('good')

}))

最佳答案

这是因为当调用回调时“this”不是您的“Serveur”实例。在你的情况下尝试类似的事情

var that = this;
socket.on('connection', (function(idZEP) {
that.demandConnexion(idZEP)
console.log('good')
}))

socket.on('connection', this.demandConnexion.bind(this));

另一个解决方案(我认为最好的)是使用箭头函数来保持与闭包相同的范围

socket.on('connection', ()=>{
//here this refers to your Serveur (the enclosing scope)
});

关于javascript - NodeJs 事件调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36174879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com