javascript - 在 Javascript 中停止嵌套超时

标签 javascript settimeout

我想执行一段任意代码并且能够随时停止它。我想我可以用 setTimeout 来做到这一点,然后用 clearTimeout 来停止它。但是,如果超时中的代码创建了它自己的超时,那么即使我清除了原始超时,这些代码也会继续执行。

例子:

var timeoutID = setTimeout(
    function(){
        console.log("first event can be stopped with clearTimout(timeoutID)");
        setTimeout(function(){console.log("but not this one")}, 5000)
    }, 5000)

现在,一种方法是控制正在执行的代码,并将任何额外超时的值存储到全局变量中,然后立即将它们全部清除。但是有更好的方法吗?有没有办法在任意代码上执行此操作?

澄清一下,我试图能够执行我想要的任何功能,然后在我想要的时候停止它,即使该功能包含超时

最佳答案

您也可以将内部超时放入变量中:

var innerTimeout,
    timeoutID = setTimeout(
    function(){
        console.log("first event can be stopped with clearTimout(timeoutID)");
        innerTimeout = setTimeout(function(){console.log("but not this one")}, 5000);
    }, 5000);

关于javascript - 在 Javascript 中停止嵌套超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18436465/

相关文章:

javascript - 在 jQuery 中,.state() 如何确定 Promise 是待处理、已解决还是已拒绝

javascript - 使用 javascript 的 setTimeout 多次运行匿名函数

javascript - setTimer 不适用于 Jquery 悬停

javascript - 代码执行的同步延迟

javascript - 如果使用所有 setTimeout ID 会怎样?

javascript - 从字典恢复复选框状态

javascript - typescript 中相同实现的不同返回类型推断

javascript - E/启动器 - 错误 : TypeError: Cucumber. Cli 不是函数

javascript - 如何根据 API 中的数据重新路由而不需要组件闪烁 - React/Redux

javascript - setTimeout 无法再次启动该功能