2014-01-15 3 views
0

getTime을 사용하여 이미지 갤러리의 타이머를 설정하려고합니다. imageWait()의 else 블록에서 경고를 추가하면이 함수는 완벽하게 작동하지만 경고 없이는 아무 일도 일어나지 않습니다. 어떤 아이디어?get time 함수를 사용하는 타이머 함수와 관련된 문제

milliseconds=null; 
galleryLoop(); 

function galleryLoop(){ 
    date=new Date(); 
    startTime=date.getTime(); 
    milliseconds=5000; 
    imageWait();  
} 

function imageWait(){ 
    date=new Date(); 
    currentTime=date.getTime(); 
    if(startTime+milliseconds<=currentTime) 
     alert('made it') 
    else 
     imageWait(); 
} 
+0

어떻게 경고없이 같이 코드를 작성하지 않았나요? 중괄호는 어떻게됩니까? 변수가 선언되지 않은 이유는 무엇입니까? 그들은 지구 적 존재를 의미합니까? – elclanrs

답변

0

당신은 다른 절에 경고 문을 추가 할 때이 작품 이유는 그 경고가 경고 창을 만들 때을 중지 자바 스크립트의 실행을 의미 전화를 차단 입니다. 즉, 경고문이 나타나면 벽 시계 시간을 늘릴 수 있습니다 (실제 세계에서 시간이 갈수록 JS 실행이 없음). 경보가 해제되면 if 문이 결국 충족됩니다. 즉, 경고를 빨리 지우면 이전과 동일한 문제가 발생할 가능성이 있습니다.

일반적으로 경고 문을 사용하지 않으면 JS 엔진이 5000ms 지연 동안 imageWait에 대한 여러 호출을 처리하고 결국 최대 호출 스택 크기에 도달하게됩니다. 오류.

적절한 솔루션의 setTimeout을 사용하여이 기능을 연기하는 것 :

var galleryTimeout = 0; 

function galleryLoop(){ 
    //Process current image 
    galleryTimeout = setTimeout(galleryLoop, 5000); 
} 

//Some time later, when done with the gallery 
clearTimeout(galleryTimeout); 
+0

지금 고맙습니다. – Jesse

+0

문제 없습니다, 도와 드리겠습니다 :) – kaminari

0

왜 이것에 대한 setTimeout 기능을 사용하지 않는?

function galleryLoop(){ 
    setTimeout(5000, imageWait()); 
} 

function imageWait() { 
    //Whatever you need to do 
} 
관련 문제