クラスコンストラクタからコールしている関数のコールバックからクラスメンバ変数を設定しようとしています。コールバックからクラスメンバ変数を設定できません
もう少し具体的には、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
Redisに詳しいわけではありませんが、 'client.incr'は非同期ですか?つまり、client.incrへのコールバックが実行される前に、console.log行を実行している可能性があります。 – rom99
http:// stackoverflowを参照してください。com/questions/34959257/why-isnt-my-future-value-available-now。 –
あなたの問題は、 "クラスメンバー変数をコールバックから設定できません"が、 "設定前にクラスメンバー変数にアクセスできません"ということではありません。 –