我想遍历一个包含将一个接一个地执行的函数的对象。我最理想的方法是以某种方式拥有这些链(即。func2
等待func1
和func3
等待func2
)但这需要动态发生并且函数将都有不同的持续时间。
我正在使用jQuery所以我认为也许“queue()”可能会有所帮助,但我还没有用过它。
A main concern
是不向对象中的函数添加任何范围/回调。我宁愿以某种方式将它们包含在父函数中,以便在循环中执行以创建回调/链接。
这是我现在所拥有的一个例子,但却愚蠢起来。谢谢你的帮助!
var obj = [
{'name':'func1','callback':function(){ alert(1); }},
{'name':'func2','callback':function(){ alert(2); }},
{'name':'func3','callback':function(){ alert(3); }}
];
$.each(obj, function(x, el) {
el.callback();
});
答案 0 :(得分:1)
试试这个:
var obj = [
function() { alert(1); },
function() { alert(2); },
function() { alert(3); }
];
$.each(obj,function() {
// Replace 500 with whatever you want
setTimeout(this,500);
});
你也可以使用for
循环,因为没有理由使用$.each
,虽然这没问题:
for (var i = 0; i < obj.length; i++) {
// Replace 500 with whatever you want
setTimeout(this[i],500);
}
这还取决于你是否希望根据你正在执行的功能有不同的时间。
这是一个for
循环:
for (var i = 0; i < obj.length; i++) {
// Replace 500 with whatever you want
setTimeout(this[i],500 * i);
}
使用$.each
:
$.each(obj,function(i) {
// Replace 500 with whatever you want
setTimeout(this,500 * i);
});
答案 1 :(得分:0)
async-waterfall
库也可以帮助您完成此操作。