Ответ 1
Как вы поняли, $.each()
не имеет .promise()
, поэтому вы не можете сделать это так, как вы пытались. Вместо этого вы можете использовать $.when()
, чтобы отслеживать, когда все связки promises, возвращаемые группой из функций Ajax, были решены:
var promises = [];
$.each(someArray, function(index, val) {
//---------some async ajax action here per loop ---------
promises.push($.ajax({...}).then(function(data){...}));
});
$.when.apply($, promises).then(function() {
// code here when all ajax calls are done
// you could also process all the results here if you want
// rather than processing them individually
});
Или, вместо вашего $.each()
, немного чище использовать .map()
:
$.when.apply($, someArray.map(function(item) {
return $.ajax({...}).then(function(data){...});
})).then(function() {
// all ajax calls done now
});