如果您知道有多少个Ajax调用,只需使用$ .when()
$.when(doAjax('a'),doAjax('b'),doAjax('c'),doAjax('d')).then(function(result_a,result_b,result_c,result_d) { console.log("Result from query a: " + result_a); console.log("Result from query b: " + result_b); console.log("Result from query c: " + result_c); console.log("Result from query d: " + result_d);});如果您不知道将有多少个ajax调用,则可以自己管理延迟的对象。
// altered version of doAjax()function doAjax(number,dObject) { var xdata = {json: $.toJSON({name: number}), delay: 1}; $.ajax({ url:"/echo/json/", data:xdata, type:"POST", success: function(data) { results.push(data); dObject.resolve(); } });}// array that will contain all deferred objectsvar deferreds = [];// array that will contain all resultsvar results = [];// make the ajax callsfor (var i = 0; i < someNumber; i++) { var dObject = new $.Deferred(); deferreds.push(dObject); doAjax(i,dObject);}// check if all ajax calls have finished$.when.apply($, deferreds).done(function() { console.log(results);});魔术带有函数apply(),该函数为函数的参数组成一个数组。



