2011-07-09 86 views
3

我在我的一個頁面上觸發了2個Ajax請求,我需要等待它們都顯示數據給用戶之前加載。管理這個最好的方法是什麼?等待多個Ajax結果的好模式?

ajax請求是從2個獨立的類發出的,這些類暴露了MakeRequest(successCallback,failedCallback)方法,因爲我確信你可以告訴相關的回調函數在ajax完成時被調用。

這些都是(使用knockoutjs)控制器中調用,這裏有一個例子:

// Some JS File 
function SomeController(ajaxService1, ajaxService2) { 

    this.model = ... 

    this.bothAjaxRequestsComplete = function() { 
     ... Do something on view 
    }; 

    this.invokeFirstAjax = function() { 
     ajaxService1.MakeRequest(firstAjaxSuccess, firstAjaxFailed); 
    }; 

    this.invokeSecondAjax = function() { 
     ajaxService2.MakeRequest(secondAjaxSuccess, secondAjaxFailed); 
    }; 

    var firstAjaxSuccess = function(data) { 
     ... Do something on model 
    }; 

    var secondAjaxSuccess = function(data) { 
     ... Do something on model 
    }; 

    var firstAjaxFailed = function(...) {...} 
    var secondAjaxFailed = function(...) {...} 
} 

var someController = new SomeController(); 
$(document).ready(function(){ 
    someController.invokeFirstAjax(); 
    someController.invokeSecondAjax(); 
}); 
+0

[Jquery的AJAX逐個]的可能重複(http://stackoverflow.com/questions/6609372/jquery-ajax-one-by-one) –

回答

3

我使用發現了一個「延遲」工作得很好了這種東西。它們允許您輕鬆定義應執行的操作列表,以及回調/回調列表。

我相信他們jQuery的1.5

+0

引入jQuery deferred object輝煌,謝謝! – somemvcperson