嘗試
$(function() {
// requests url and data objects
var Reports = [{
"url": "url1",
"data": JSON.stringify([1])
}, {
"url": "url2",
"data": JSON.stringify([2])
}, {
"url": "url3",
"data": JSON.stringify([3])
}];
// all responses
var responses = [];
// jQuery.deferred , resolved when all requests completed
var requests = new $.Deferred() || $(requests);
// do stuff when all requests completed
requests.done(function (data) {
console.log(data);
alert(data.length + " requests completed");
$.each(data, function (k, v) {
$("#results").append(v + "\n")
})
});
// `request` fn
var request = function (url, data) {
return $.post(url, {
json: data
}, "json")
};
// `response` fn
var response = function (data, textStatus, jqxhr) {
// if response `textStatus` === `success` , do stuff
if (textStatus === "success") {
console.log(data, textStatus);
responses.push([textStatus, data, $.now()]);
// if items in queue , dequeue next item
if ($.queue(requests, "ajax").length) {
$.dequeue(requests, "ajax")
} else {
// if items not in queue , resolve requests
requests.resolve(responses)
}
};
};
// `error` fn
// var error = function() {};
// create queue of `request` functions
$.each(Reports, function (k, v) {
$.queue(requests, "ajax", function() {
return request(v.url, v.data)
.then(response /* , error */)
})
});
// dequeue first item in queue
$.dequeue(requests, "ajax")
})
的jsfiddle http://jsfiddle.net/guest271314/mgqhzejh/