2009-12-12 1 views
0

예를 들어 요소 A, B, C 및 D와 같이 여러 dom 요소에 대해 여러 번 실행하려는 함수가 있습니다.이 함수는 반복적입니다. 즉, 실행이 끝나면 다시 실행됩니다. 동일한 요소에 대해 일부 시간 초과 후.jquery 여러 이벤트를 동기화

이제 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); 
} 

이것이 올바른 방법인지 나는 모른다. 문제는 내가 innitial timeout 값을 모두 같은 값으로 설정하면, 모든 것이 동시에 시작되기 때문에 모든 것이 잘 동작한다는 것입니다. 그러나 위와 같은 경우가 아니라면 때로는 제대로 작동하지 않을 수도 있습니다. 항상 작동한다는 것을 의미합니다. 문제는 동일한 시간 순서를 따르지 않는 것입니다. 나는 그들이 시간의 다른 시점에서 시작하지만 몇 초 후에 예를 들어, 이미 같은 시간에 이미 볼 수 있습니다 ...

어떤 생각? 감사합니다

답변

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