2017-12-24 2 views
0

다음은 간단한 코드입니다.콜백 루프 중지

loop(); 콜백을 사용하여 loop 함수를 반복적으로 트리거하고 있습니다. 그게 좋겠지 만, 앞으로 내 loopStart 함수를 사용하여 loop(); 콜백을 중지하고 함수의 반복 호출을 중지 할 수 있기를 원합니다. 어떻게해야합니까?

(function loopStart() { 
    triggerAudio('1.wav'); 
}()); 

function triggerAudio(soundFileName) { 
    (function loop() { // this function called repeatedly by callback 
     setTimeout(function() { 
      // some code 
      loop(); // callback 
     }, randomTime); 
    }()); 
} 

나는 clearTimeout를 사용하는 예를 본 적이 있지만 내가 정말 setTimout을 중지 아니에요 이후는이 경우에 작동하지 않습니다 의심?

답변

0

myVar = setTimeout(function() {으로 변경하고 clearTimeout을 사용하여 질문을 해결했습니다.

(function loopStart() { 
    triggerAudio('1.wav'); 
    setTimeout(function() { 
     clearTimeout(myVar); // using clearTimeout here 
}, 5000); 
}()); 

function triggerAudio(soundFileName) { 
    (function loop() { // this function called repeatedly by callback 
     myVar = setTimeout(function() { // added myVar = here 
      // some code 
      loop(); // callback 
     }, randomTime); 
    }()); 
} 
: 여기

는 업데이트 된 코드입니다