【问题标题】:Stop Callback Loop停止回调循环
【发布时间】:2017-12-24 23:07:17
【问题描述】:

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

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

【问题讨论】:

    标签: javascript function loops callback settimeout


    【解决方案1】:

    我通过将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); 
        }());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 2013-07-21
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多