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 コールの終了を待機してる。
なるほど。