1

私はいくつかの 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;
                                }
                            }
                        }); 
                    }

                }
            });

(* - これらはデモ用のダミー関数です)

4

0 に答える 0