2017-12-25 14 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 
} 

私は何とか名前(私は専門用語のわからないんだけど)私は1つを停止することができるように、各コールバックによって開始setTimeoutする必要が疑われますか?しかし、私はどのようにこれにアプローチするのか分からない。

答えて

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

次に、clearTimeout(timeout)を呼び出してタイムアウト機能をクリアすることができます。あなたのシナリオでは、あなただけのタイムアウトオブジェクトを保持する変数を使用することができますので、あなたがビデオを再生しようとすると、それは未定義でない場合、あなたはこのように、タイムアウトオブジェクトを検証し、それをクリアすることができます。

if (timeout) clearTimeout(timeout) 

前のタイムアウトを停止するには

関連する問題