想象一下,我們必須通過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