2013-05-12 2 views
0

자바 스크립트 코드에서 두 개의 함수가 하나씩 반복됩니다. 같은JavaScript : 함수를 지연시키는 방법은 무엇입니까?

뭔가 :

function doThis(){ 
    doThat();   
    window.setTimeout(doThis , 2000); 
} 

function doThat(){ 
    if(someCondition){ 
    window.clearTimeout(id) 
    } 
    var id = window.setTimeout(doThat, 10000); 
} 

무엇 정확하게 내가 원하는 : doThis은 즉시 window가로드로 라고합니다. 이제 호출 된 후 컨트롤을 다시 실행하기 전에 10 초 동안 대기하는 doThat()으로 컨트롤을 전달해야합니다.

이제 if 코드 명을 만족할 때까지 doThat()이 실행됩니다. 그리고 나서, 컨트롤을 다시 doThis()으로 보내야합니다. 그러면 2 초 동안 기다렸다가이 사이클을 반복해서 반복해야합니다.

저는 jQuery (콜백 또는 연결 물건) 또는 다른 javaScript libarary를 사용하고 싶지 않습니다. 어떻게해야합니까?

+0

"if가 만족 될 때까지 실행"? 어떻게, 코드는 그렇게하지 않습니다. 그리고 코드를 기다리는 바쁜 루프에 코드를 넣으면 안됩니다. 'setInterval'을 사용하는 – Alnitak

답변

2

내가 제대로 이해하면,

function first() { 
    setTimeout(second, 1000) 
} 

function second() { 
    if(condition) { 
     setTimeout(first, 2000) 
    } else { 
     setTimeout(second, 10000) 
    } 
} 

필요가 없습니다 어디서나 시간 제한을 저장하거나 취소 할 수 있습니다.

+0

에서 'first()', 당신은 'setTimeout (second, 1000)'을했습니다. 그게 뭔지 설명해 주시겠습니까? 나는 이유없이 1 초를 잃을 것이다. 그렇지 않니? –

+0

@NavneetSaini : 그 때 당신의 설명을 잘못 읽었습니다. 현재 첫 번째 함수가 전혀 이해가되지 않기 때문에 실제 코드를 제공하면 도움이됩니다. – georg

+0

나는 그것을하는 법을 알아 냈다. 그것이 효과가 없다면 나는 돌아올 것이다. 귀하의 답변을 주셔서 감사합니다 :) –

0

더 적합 할 수 있습니다 setInterval() 사용 : link

+3

은 거의 적합하지 않습니다. – Alnitak

+1

@Alnitak 당신은 무엇을 의미합니까? –

+0

@NavneetSaini 왜냐하면'setInterval'은 탭이 숨겨져있을 때 안정적인 타이밍을 제공하지 않기 때문입니다. – Alnitak

관련 문제