一、已知数量的ajax请求时
当ajax请求的数量固定且已知时,可以直接使用jQuery的$.when().then()方法:
$.when(ajax1,ajax2,ajax3,...).then(successFunc(){},failFunc(){});
示例:
$.when($.ajax(options), $.ajax({options})).done(function (data1, data2) {
//doSomething
});
二、当未知数量的ajax请求时
第一种情况的解决办法很简单,但是有时候可能会遇到一些特殊的情况,比如某些时候想把这些请求的过程提取出来写作一个通用的方法,此时请求的数量就变得不确定了,这种时候,$.when()中的参数就变得没有办法填了,而$.when()又不支持直接接受ajax数组作为参数(这是因为$.when方法的参数需要的是promise对象,而不是array对象),因此我们需要使用apply()方法来将存有不确定数量的ajax请求对象的数组传入$.when()方法中。
示例:
var requestList = [ ajax1 , ajax2 , ajax3 , ... ]; //存有不确定数量的ajax请求对象的数组
$.when.apply($, requestList).done(function () {
//通过arguments来取出每个ajax请求成功函数返回的数据
//doSomething
});