我是 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 构建参数列表。我怎么做?