停止回调循环

时间:2017-12-24 23:07:18

标签: javascript function loops callback settimeout

以下是我的代码的简化版本。

我使用回调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

1 个答案:

答案 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); 
    }());
}