2017-12-25 19 views
-1

clearTimeout(myVar)을 사용하여 특정 setTimeout 루프를 중지하려면 어떻게합니까?clearTimeout을 사용하여 특정 setTimeout 루프를 중지하는 방법

매개 변수로 고유 한 오디오 파일 이름을 포함하는 다중 콜백을 사용하고 있습니다. triggerAudio 함수는 콜백을 받으면 오디오 파일 루프를 시작합니다. 문제는 하나 이상의 setTimeout 오디오 루프를 시작한 경우 (즉, 여러 사운드가 동시에 재생되는 경우) 특정 루프/사운드/setTimout을 중지하려면 어떻게해야합니까? 다른 말로하면, 어떤 오디오 루프가 멈추는 지 어떻게 선택할 수 있습니까?

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

// starts 2.wav looping 
(function loopStart() { 
    triggerAudio('2.wav'); 
}()); 

// stops one of the audio loops after 5 seconds 
setTimeout(function() { 
    (function loopStop() { 
     clearTimeout(myVar); // not sure how to control which function this will stop/clear 
    }()); 
}, 5000); 

// main functino that loops the files noted by the callbacks 
function triggerAudio(soundFileName) { 
    // code that starts and loops audio file with setTimeout loop 
} 

나는 어떻게 든 이름 난 그 일을 중단 할 수 있도록 setTimeout 각 콜백에 의해 시작 (필자는 용어의 확실하지 않다) 필요 의심? 하지만, 어떻게 접근해야할지 모르겠습니다.

답변

1
var timeout = setTimeout(function() {...}, 1000); 

그런 다음 clearTimeout (timeout)을 호출하여 시간 초과 기능을 지울 수 있습니다. 시나리오를 들어, 당신은 단지 시간 제한 개체를 유지하는 변수를 사용할 수 있습니다, 그래서 당신은 비디오를 재생하려고 할 때 정의되지 않은 경우,이 같은 시간 제한 개체를 확인하고 그것을 취소 할 수 있습니다

if (timeout) clearTimeout(timeout) 

이전 제한 시간을 중지하려면