jquery で複数の ajax 処理が終わったらある処理をしたいとき
var requests = [
{ url: 'http://...', settings: { ... } },
{ url: 'http://...', settings: { ... } },
{ url: 'http://...', settings: { ... } }
];
var dfds = [];
for (var i =0; i < requests.length; i++) {
req = requests[i];
dfd = $.ajax(req.url, req.settings);
dfds.push(dfd);
}
$.when.apply($, dfds).done(function() {
//処理
})ってやるとdedsの処理がすべて終わったら特定の処理を行うことができる。
jQuery.ajax のコールを行って、戻り値として得られる jQuery.Deferred を dfds 配列に格納して
$.when.apply($, dfds).done で全ての Ajax コールの終了を待機してる。
なるほど。