2015-04-20 111 views
2

在我的代码中,我必须应付几次ajax调用,然后在完成所有的调用后调用更新函数。我试图用ajaxStop,但问题是,如果循环没有作出任何Ajax调用该方法不是叫......当所有的Ajax查询完成后执行一个函数

它看起来像这样:

for (var key in data) { 
    if (...) { 
    $.ajax({ ... }); 
    } 
} 

$(document).ajaxStop(function() { 
    updateAll(); // I need to call this function even if there was no ajax call 
}); 

有人知道如何一旦所有来自前一个循环的ajax完成(即使根本没有查询),就调用一个函数?

感谢

回答

1

返回的承诺添加到一个数组,然后使用$.when决定时,他们都做

var xhr = []; 

for (var key in data) { 
    if (...) { 
     var request = $.ajax({ ... }); 

     xhr.push(request); 
    } 
} 

$.when.apply($, xhr).done(updateAll); 
+0

它的工作原理,感谢快速回答:) – Luckyn

相关问题