ここにJavaScript関数があります:
function getValue(key) {
var value;
switch(_options.myType){
case "cookie":
value = readFromCookie(key);
break;
case "localStorage":
value = readFromLocalStorage(key);
break;
case "db":
//return value from the server
// how do I wait for the result?
$.ajax({
type: "GET",
url: "123",
data: { .... },
success: function(data){
value = data;
}
});
break;
}
return value;
};
ajax リクエストを送信する場合、ajax リクエストが完了するまで待つ必要があります。どうすればいいですか?
値を計算せずに関数を終了できないわけではありません。つまり、後で値を返す関数をsuccess:
ハンドラー内に配置することはできません (または、何か理解できないのでしょうか?)。したがって、関数内で計算する必要がありますgetValue()
。
アップデート
PSsuccess:
では、ハンドラー内でコールバックを使用できるようにコードをリファクタリングするにはどうすればよいですか? コードの 2 番目の部分は次のとおりです。
MyClass123.prototype.myMethod = function(value) {
//..............
var var1 = this.getValue("key1");
if (var1 == "123") { ... }
else { .... }
//..............
}
};