Node.jsの非同期フローに苦労しています。以下のクラスがあるとします。
function myClass() {
var property = 'something';
var hasConnected = false;
this.connect = function(params) {
//Some logic that connects to db and in callback returns if the connection is successful
connectToSomeDB('ConnectionString', function(connectionResult) {
hasConnected = connectionResult
})
};
this.get = function(params) {
if(hasConnected) {
DoGetOperation() //
}
else {
//Another question. What should be done here. Call the connect again?
}
}
}
Javascript と Node 構造を考慮すると、私の設計にはいくつかの大きな問題があると確信していますが、操作が適切に機能するためにconnect
呼び出す必要があるため、方法を理解できません。しかし、操作後にログを記録すると、次のようになります。
brandNewObject = myClass();
brandNewObject.connect();
brandNewObject.get();
isConnected
グローバル変数を取得する前に get 関数が呼び出されていることがわかります。実際に Node の非同期構造に反することなく、これを機能させるにはどうすればよいですか?
理想的には、私が探している解決策は、コールバックの「外部クラス」を定義するのではなく、実際に内部で「接続」を処理することです