私はjavascriptとjqueryを初めて使用し、jqueryのDeferredオブジェクトを使用して、アクションを実行する前にループが完了するのを待つ方法を学んでいます。ループ内の関数は、特別な順序で呼び出す必要はありません。言い換えれば、関数nは関数n-1の結果に依存しないので、パイプでそれらをチェーンしません。
これまでのところ、これは機能します。
// wait some random amount of time, then log a message
// and resolve the Deferred object
function doTask(id) {
var defer = $.Deferred();
setTimeout(function() {
console.log(id + " finished!");
defer.resolve(id);
}, Math.random()*1000);
return defer.promise();
}
// log when these three independent tasks complete
$.when( doTask("foo1"), doTask("foo2"), doTask("foo3")).done(function() {
console.log(" ... all done in no particular order!");
});
しかし、プログラムで$.whenのパラメータリストを作成したいと思います。それ、どうやったら出来るの?