一、已知數(shù)量的ajax請求時
當(dāng)ajax請求的數(shù)量固定且已知時,可以直接使用jQuery的$.when().then()方法:
$.when(ajax1,ajax2,ajax3,...).then(successFunc(){},failFunc(){});
示例:
$.when($.ajax(options), $.ajax({options})).done(function (data1, data2) {
//doSomething
});
二、當(dāng)未知數(shù)量的ajax請求時
第一種情況的解決辦法很簡單,但是有時候可能會遇到一些特殊的情況,比如某些時候想把這些請求的過程提取出來寫作一個通用的方法,此時請求的數(shù)量就變得不確定了,這種時候,$.when()中的參數(shù)就變得沒有辦法填了,而$.when()又不支持直接接受ajax數(shù)組作為參數(shù)(這是因為$.when方法的參數(shù)需要的是promise對象,而不是array對象),因此我們需要使用apply()方法來將存有不確定數(shù)量的ajax請求對象的數(shù)組傳入$.when()方法中。
示例:
var requestList = [ ajax1 , ajax2 , ajax3 , ... ]; //存有不確定數(shù)量的ajax請求對象的數(shù)組
$.when.apply($, requestList).done(function () {
//通過arguments來取出每個ajax請求成功函數(shù)返回的數(shù)據(jù)
//doSomething
});