我已经在这里阅读了很多帖子,并且没有找到满足我问题的答案。
基本上我正在构建 n AJAX电话,并希望只有在所有返回后才能做某事。
但无论我尝试什么,done()
回调都会过早发生。这是我的代码:
// turn the URL array into an AJAX request array
for (var i=0; i<mediaRequests.length; i++) {
mediaRequests[i] = $.ajax(mediaRequests[i], {dataType: 'jsonp'});
}
$.when($, mediaRequests).done(function() {
var responses = arguments[1];
// for each response...
for (var i=0; i<responses.length; i++) {
var data = responses[i].responseJSON;
console.log(data);
}
});
但控制台打印出undefined
。
为什么没有$.when($, mediaRequests).done()
给我回复?
答案 0 :(得分:0)
你好,你可以像这样使用defferreds数组:
$.when.apply($, mediaRequests).done(function(){
而不是:
$.when($, mediaRequests).done(function() {
当你知道你打电话给多少个ajax时你可以做到这一点(假设有3个):
$.when.apply($, mediaRequests).done(function(result1,result2,result3){
// now result1 got result from first ajax, result2 from second ajax and so on