1

jqueryを使用して遅延Ajaxを使用しています。ボタン「TestAjax」のクリックイベントで、2つのWCFサービスを呼び出します。ロードが完了したら、いくつかのロジックを実行します。私のコードは以下の通りです

this.TestAjax = function () {
        debugger;
        var flattened1;
        var flattened2;




        function callFirstService() {

            ViewModel.loadFirstService(1));

       }

        function callSecondService() {

            ViewModel.loadSecondService(2);
       }

        // Multiple Ajax Requests 
       $.when(callFirstService(), callSecondService()).done(function () {

           console.log("now we are will start logic);

           // logic here                



        });



};

以下のような異なるビューモデルでサービスを呼び出すためのコード

  this.loadFirstService = function (id) {



        var input =
            {
                Id: id

            };


        $.ajax({
            url: "../RestService/someService",
            type: "PUT",
            contentType: 'application/json',
            processData: false,
            data: JSON.stringify(input),
            error: function(XMLHttpRequest, textStatus, errorThrown) {

                alert(errorThrown);
            },

            success: function(allData) {
                var test = $.map(allData, function(item) {

                    return new Data1(item);
                });

                self.List1(test);




            }
        });

 };



 this.loadSecondService = function (id) {



        var input =
            {
                Id: id

            };


        $.ajax({
            url: "../RestService/someService",
            type: "PUT",
            contentType: 'application/json',
            processData: false,
            data: JSON.stringify(input),
            error: function(XMLHttpRequest, textStatus, errorThrown) {

                alert(errorThrown);
            },

            success: function(allData) {
                var test = $.map(allData, function(item) {

                    return new Data2(item);
                });

                self.List2(test);




            }
        });

};

問題は、$.when 内に入り、console.log("now we are will start logic); を出力してから、サービスを呼び出すことです。最初にサービスを呼び出してから、サービスが正常にヒットしたときにロジックを実行するにはどうすればよいですか?

十分に明確でない場合はお知らせください。

4

1 に答える 1

1

遅延オブジェクトを返すにはメソッドが必要です。

this.loadSecondService = function (id) {
    var input = {
        Id: id
    };
    return $.ajax({
        ...
    });

次に、内部でデータを受信するためのロジックを処理する必要があります.done()

$.when(callFirstService(), callSecondService()).done(function (firstService,secondService) {
    console.log("Both services are done");
})
于 2013-03-19T18:07:02.640 に答える