使用jquery顺序调用多个函数

时间:2010-06-02 22:40:21

标签: javascript jquery function loops callback

我想遍历一个包含将一个接一个地执行的函数的对象。我最理想的方法是以某种方式拥有这些链(即。func2等待func1func3等待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();
});

2 个答案:

答案 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库也可以帮助您完成此操作。