我试图从我从类构造函数调用的函数的回调中设置类成员变量。
更具体一点:我需要基于Redis INCR结果在Connection类构造函数中设置连接ID(每个客户端都有一个“全局”连接ID,因此我可以有多个节点)。
这是代码。
class Connection {
constructor() {
client.incr('conn_id', (err, reply) => {
this.connID = reply;
});
}
}
var lovely = new Connection();
console.log(`lovely connID is ${ lovely.connID }`);
结果是:
lovely connID is undefined
最佳答案
似乎client.incr('conn_id'....)是异步的,这意味着在您的代码运行后将调用回调。
所以
console.log(lovely connID is ${ lovely.connID }
);将在回调之前被调用
这类似于:
class Connection{
constructor(){
self=this;
setTimeout( function(){self.client='somevalue';
console.log('value1');}, 10)
}
}
var a = new Connection();
console.log(a.client);
运行此将导致
关于javascript - 无法通过回调设置类成员变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38018167/