[英]How Stop Specific setTimeout Loop Using clearTimeout
如何使用clearTimeout(myVar)
停止特定的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
以便我可以停止那個? 但是,我不確定如何處理這個問題。
var timeout = setTimeout(function() {...}, 1000);
那么你可以調用 clearTimeout(timeout) 來清除你的超時函數。 對於您的場景,您可以只使用一個變量來保留超時對象,因此當您嘗試播放視頻時,您可以驗證超時對象並在未定義時清除它,如下所示:
if (timeout) clearTimeout(timeout)
停止上一次超時
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.