我正在尝试从我从类构造函数调用的函数的回调中设置类成员变量。
更具体一点:我需要根据 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 未定义
最佳答案
似乎 client.incr('conn_id' ....) 是异步的,这意味着回调将在您的代码运行后调用。
所以
console.log(可爱的connID是${ lovely.connID }
);会在回调前被调用
(err, reply) => { self.connID = reply; }
与此类似:
class Connection{
constructor(){
self=this;
setTimeout( function(){self.client='somevalue';
console.log('value1');}, 10)
}
}
var a = new Connection();
console.log(a.client);
运行这个会产生
undefined value1
关于javascript - 无法从回调中设置类成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38018167/