构建jquery';以编程方式设置参数时的延迟对象
我不熟悉javascript和jquery,正在学习如何使用jquery的延迟对象在执行操作之前等待循环完成。循环中的函数不需要按任何特殊顺序调用。换句话说,函数n不依赖于函数n-1的结果,所以我不会用管道将它们链接在一起 到目前为止,我有一个有效的方法:构建jquery';以编程方式设置参数时的延迟对象,jquery,jquery-deferred,Jquery,Jquery Deferred,我不熟悉javascript和jquery,正在学习如何使用jquery的延迟对象在执行操作之前等待循环完成。循环中的函数不需要按任何特殊顺序调用。换句话说,函数n不依赖于函数n-1的结果,所以我不会用管道将它们链接在一起 到目前为止,我有一个有效的方法: // wait some random amount of time, then log a message // and resolve the Deferred object function doTask(id) { var def
// 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!");
});
但我希望以编程方式为$构造参数列表。如何执行此操作?创建一个数组并将其应用于
$。当时
var defArr = [];
defArr.push(doTask("foo1"));
defArr.push(doTask("foo2"));
defArr.push(doTask("foo3"));
$.when.apply(null,defArr).done(function(){
console.log(" ... all done in no particular order!");
});
工作起来很有魅力!令人惊叹的!