jquery同步几个事件

时间:2009-12-12 08:38:51

标签: jquery javascript-events

我有一个函数,我想为不同的dom元素多次执行,例如元素A,B,C和D.这个函数是递归的,这意味着当它完成执行时,它会在一些超时后再次运行,对于相同的元素。

现在,我希望元素A在B,C和D之前开始执行。另外B在D和B之前开始,依此类推。我尝试了以下

setTimeout(execute(A),1000);
setTimeout(execute(B),2000);
setTimeout(execute(C),3000);
setTimeout(execute(D),4000);

function execute(element){
    doSomething();
    setTimeout(execute(element),5000);
}

我不知道这是否是正确的做法。问题是,如果我将所有的初始超时值设置为相同,那么它们都会同时启动,一切正常。但如果没有,就像上面的例子那样,那么有时候它会起作用,有时候不行,我的意思是它总是有效,问题是它们似乎没有遵循相同的时间顺序。我看到他们从不同的时间点开始,但是在几秒钟之后,例如有一些已经在同一时间......

有什么想法吗?谢谢

1 个答案:

答案 0 :(得分:1)

实现某种跟踪要应用函数的元素的队列可能会更好,并让它跟踪下一步要执行的元素。

伪代码:

Call function with an array of elements to execute for and optionally an interval

Function:
    Get the next element from the queue.
    Execute a helper function with the retrieved element
    Put the element back last in the queue
    Set a timeout for the next execution time