10. 複雑なDeferred実用例
function longTimeFunc(){
var d = new $.Deferred();
// 10秒かかる複雑なタスクの代わり
setTimeout(function(){
var result = “rslt”;
d.resolve(result);
}, 10000);
return d;
}
function main(){
var d2 = longTimeFunc();
d2.done(function(arg){
console.log(“complete”, arg);
// -> result: rslt
});
}
14. 複雑なDeferred実用例
function longTimeFunc(){
var d = new $.Deferred();
// 10秒かかる複雑なタスクの代わり
setTimeout(function(){
var result = “rslt”;
d.resolve(result);
}, 10000);
return d.promise();
}
function main(){
var p = longTimeFunc();
p.done(function(arg){
console.log(“complete”, arg);
// -> result: rslt
});
}
20. 非同期処理の個数が不定
var userIds = getUserIds(); // ユーザーIDの配列
var ps = [];
for(var i = 0; i <userIds; i++){
var p = $.ajax(…); //$.ajaxはpromiseを返す
ps.push( p );
}
$.when.apply(this, ps).done(function(){
…
});