function GetId() {
var id;
$.post("/Edit/CreateId", function (data) {
id = data;
});
return id;
}
ただし、IDがサーバーから返される前に戻ります。したがって、idは未定義です。
これを回避する方法はありますか?
function GetId() {
var id;
$.post("/Edit/CreateId", function (data) {
id = data;
});
return id;
}
ただし、IDがサーバーから返される前に戻ります。したがって、idは未定義です。
これを回避する方法はありますか?
post()
メソッドは非同期であるため、結果が存在する場合はそのメソッドが起動し、それまで関数success
の残りの部分をブロックしません。GetId
(おそらく)望ましい動作を得るには、id
値をグローバル変数に割り当てるか(悪い選択)、残りの機能をコールバック関数として(引数として)関数id
に直接渡します。post
success
function GetId( cb ) {
$.post("/Edit/CreateId", function (data) {
// rest of your program logic will be executed here
cb( data );
});
}
いつでもコールバックを渡すか、無名関数を使用できます。それはうまくいくかもしれませんが、おそらく少し不便でしょう。ただし、他の機能がどのように連携するかはわかりません。
function GetId(callback) {
$.post("/Edit/CreateId", function (data) {
var id = data;
callback(id)
});
}
匿名関数での使用例:
GetId(function(id){
//Do what you need to do.
});