「滝」と呼ばれるものを作成しようとしています。非同期関数の配列を順次処理したい (jQuery promises)。
これは不自然な例です:
function doTask(taskNum){
var dfd = $.Deferred(),
time = Math.floor(Math.random()*3000);
setTimeout(function(){
console.log(taskNum);
dfd.resolve();
},time)
return dfd.promise();
}
var tasks = [1,2,3];
for (var i = 0; i < tasks.length; i++){
doTask(tasks[i]);
}
console.log("all done");
実行された順序でタスクを完了したいと思います(配列に存在します)。したがって、この例では、タスク 1 を実行して解決するのを待ってから、タスク 2 を実行して解決するのを待ち、タスク 3 などを実行して、「すべて完了」をログに記録します。
多分これは本当に明白ですが、私は午後中ずっとこれを理解しようとしていました.