_$.each(someArray, function(index, val) {
//---------some async ajax action here per loop ---------
$.ajax({...}).done(function(data){...});
}.promise().done(function(){...}); //<-------error here can't use with $.each
_
promise()
があるわけではありませんか?ご存知のように、$.each()
には.promise()
がないため、従来の方法では実行できません。代わりに、$.when()
を使用して、Ajax関数のグループによって返される一連のpromiseがすべて解決された時期を追跡できます。
_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
});
_