想象一下,我们必须通过ajax请求源代码。当所有回调被触发时,我想执行一些操作。等待所有ajax回调执行的最佳解决方案
(function($){
var sources = ['http://source1.com', 'http://source2.com'],
guard = 0,
someHandler = function() {
if (guard != sources.length) { return; }
//do some actions
};
for (var idx in sources) {
$.getJSON(sources[idx], function(){ guard++; someHandler(); })
}
})(jQuery)
我不喜欢这里的是,在这种情况下,我不能处理的响应失败(例如我不能设置超时反应来。)和:这可怎么除了这种方法来完成总体方法(我想应该有一种方法来使用更多功能的编程功能)
任何想法?
问候!
UPD:感谢解决方案与链回调。我找到了一个好方法here:。这是在评论提出:
(function hidenext(jq){
jq.eq(0).fadeOut("fast", function(){
(jq=jq.slice(1)).length && hidenext(jq);
});
})($('div#bodyContent a'))
随着调整它可以等待回调的最后一点点。
现在我想正确处理长时间运行的请求。任何线索?
这个问题之前已经被问到过了,而不是XHR,它是一系列的DOM事件。我也不记得问题的名称。 – 2010-05-28 10:43:06