2015-04-29 35 views
-1

我想要一個回調函數,在所有休息請求都從主幹js中的服務器獲得響應之後調用該函數。 函數將在所有請求得到響應後執行,而不是針對每個響應。檢查所有休息請求是否在主幹js中得到響應

我知道成功,錯誤和完整的方法,但是,這些方法是針對每個響應執行的。

請告訴我任何其他函數存在或從服務器收到所有響應後被調用。

我發佈了下面的代碼來從服務器獲取數據。

fetchNextPage : function(successCallback, errorCallback, completeCallback, context) 
    { 
     this.requestNextPage({ 
      remove : false, 
      success : function(collection, response, options) { 
       if (typeof successCallback === "function") 
       { 
        successCallback.apply(context, [ collection, response, options ]); 
       } 
      }, 

      error : function(collection, response, options) { 
       if (typeof errorCallback === "function") 
       { 
         errorCallback.apply(context, [ collection, response, options ]); 
       } 
      }, 

      complete: function(xhr, status){ 
       if (typeof completeCallback === "function") 
       { 
         completeCallback.apply(context, [ xhr, status ]); 
       } 
      } 
     }); 
    } 

回答

1

你想要jQuery $.when()函數。

jQuery.when(deferreds)

提供一種方法來執行基於一個或多個對象 ,表示異步事件通常遞延對象的回調函數。

每個jQuery的AJAX請求將返回一個jqXHR對象,它是的promisesjQuery's implementation的一部分。 jqXHR對象被同步返回,然後在它所表示的異步操作完成時再次觸發。然後,您可以使用$.when()來爲這些承諾中的一個(或多個)設置監聽器/回調。異步操作返回的值將被傳遞到由then包裝的回調中。

$.when(jqXHR1, jqXHR2, jqXHR3).then(function(return1, return2, return3) { 
    //callback here will run only after the requests that returned the 
    //asyncronous operations linked to jqXHR 1-3 are completed. 
}); 
+0

它解決了我的問題。非常感謝你.. –

相關問題