我之前在 jQuery 中使用过承诺 - 但我无法将它应用于这种情况。我更喜欢使用 $.when() 和 $.done() 方法来实现这一点。
据我了解,我需要构建一个 $.Deferred 对象来记录请求以及这些请求何时完成 - 触发回调。在我下面的代码中,回调在 ajax 请求之前而不是之后触发 - 也许我只需要一些睡眠
我知道我的代码不完整,我一直在努力通过添加 for 循环来应用它。
http://jsfiddle.net/whiteb0x/MBZEu/
var list = ['obj1', 'obj2', 'obj3', 'obj4', 'obj5'];
var callback = function() {
alert("done");
};
var requests = [];
var ajaxFunction = function(obj, successCallback, errorCallback) {
for(i = 0; i < list.length; i++) {
$.ajax({
url: 'url',
success: function() {
requests.push(this);
}
});
}
};
$.when($.ajax(), ajaxFunction).then(function(results){callback()});