以下是我的代码的简化版本。
我使用回调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 :(得分: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);
}());
}