私はいくつかの ajax 関数を持っています*
function MyFunctionA(PassingObj) {
$.ajax({
url: '123.ashx',data: PassingObj, type: 'POST',contentType: 'application/json',
success: function (data1) {
return data1
}
}
});
function MyFunctionB(PassingObj) {
$.ajax({
url: '456.ashx',data: PassingObj,type: 'POST', contentType: 'application/json',
success: function (data2) {
return data2
}
}
});
var GetValuesXY(){
var x = MyFunctionA(PassingObj);
var y = MyFunctionB(PassingObj);
return x + y;
}
MyFunctionA と MyFunction は、ページ全体で呼び出される一般的な関数であり、さまざまな状況で使用できるため、可能でない場合はコールバックを実装したくありません。Ajax 関数を async:false に設定できません - このオプションは v1.8 から非推奨になり、使用できず、問題が発生しました ( http://api.jquery.com/jQuery.ajax/ )
確認するために、関数 GetValuesXY(){} を正常に呼び出すことはできません。x は非同期であるため、結果を待たずに続行されるため、常に未定義です。
したがって、現在、上記を処理する方法を知っている唯一の方法は2をマージすることであり、これは状況では受け入れられません:
function MyFunctionA(PassingObj) {
$.ajax({
url: '123.ashx',data: PassingObj,type: 'POST',contentType: 'application/json',
success: function (data1) {
$.ajax({ //MyFunctionB is effectively copied in here
url: '456.ashx',data: PassingObj,type: 'POST',contentType: 'application/json',
success: function (data2) {
return data1 + data2
}
}
});
}
}
});
今、私は2つのサンプル関数を別々に使用することはまったくできません.これはおそらく無制限の量の順列を持つ可能性があり、必要なたびにこれらのそれぞれをカットアンドペーストする必要があるため、プログラミングの非常に非効率的な方法です.任意の機能を使用する
少なくとも関数呼び出しを ajax リクエストに入れることはできませんか? 曲に合わせた何か
var myData1;
var myData2;
$.ajax({
call MyFunctionA(),
success: function (data1) {
myData1 = data1;
$.ajax({
call MyFunctionB(),
success: function (data2) {
myData2 = data2;
}
}
});
}
}
});
(* - これらはデモ用のダミー関数です)