gpt4 book ai didi

javascript - 无法从回调中设置类成员变量

转载 作者:可可西里 更新时间:2023-11-01 11:46:33 26 4
gpt4 key购买 nike

我正在尝试从我从类构造函数调用的函数的回调中设置类成员变量。

更具体一点:我需要根据 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/

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