簡體   English   中英

如何使用 clearTimeout 停止特定的 setTimeout 循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM