2017-12-24 30 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

setTimeout(function() {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); 
    }()); 
} 
は、