Один из ручных способов сделать это - поставить в очередь ваши вызовы AJAX в массиве, а затем подсчитать количество полученных вами ответов и подождать, пока это количество не совпадет с размером вашей исходной очереди (или, альтернативно, выдвинуть Вызов из очереди, когда ответ сделан, и вы знаете, что у вас есть все, когда очередь имеет размер 0).
Вам необходимо проверить, готовы ли вы продолжить вызов setTimeout.
Кроме того, вы можете проверить отложенную поддержку в jQuery 1.5 +
РЕДАКТИРОВАТЬ: быстрый и грязный пример ручного подхода:
var remoteCallA = function(){
$.getJSON('someurl', function(){
success++;
});
};
var remoteCallB = function(){
// etc
};
var whenAllDone = function(){
// do something when everything is done
};
var checkAllDone = function(){
if(success === remoteCalls.length){
whenAllDone();
}
else{
setTimeout(checkAllDone, 1000);
}
};
var remoteCalls = [remoteCallA, remoteCallB];
var success = 0;
for(var i = 0, length = remoteCalls.length; i++){
remoteCalls[i]();
}
checkAllDone();