下面是我的代码的简化版本。
我通过使用回调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
?
我通过将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);
}());
}