javascript - 有没有办法一次性清除所有 JavaScript 计时器?

标签 javascript jquery timer

我正在使用 jQuery .load 为我的网站构建一个自动刷新评论部分。所以我使用 JavaScript 'setTimeout' 计时器来检查新评论。

但是在做了一些事情之后,比如更改评论页面或删除(全部使用ajax),一些旧计时器继续运行,即使我在加载新的ajax内容之前使用了clearTimeout。

当我加载新的 ajax 内容时,有没有办法清除所有 JavaScript 计时器?

最佳答案

警告:我的下面的代码有问题,主要是因为需求本身就有问题。我想知道你为什么要清除所有计时器。这会使您的代码破坏任何使用计时器的插件。这比您想象的要常见得多,当然除非您正在调试或享受乐趣,否则这并不重要。

<小时/>

如果必须:

这是最糟糕的解决方案之一。然而,它揭示了 JavaScript 本身的潜在安全漏洞。但由于它可以正常工作(清除所有计时器),我认为分享它会很酷:

var maxId = setTimeout(function(){}, 0);

for(var i=0; i < maxId; i+=1) { 
    clearTimeout(i);
}

关于javascript - 有没有办法一次性清除所有 JavaScript 计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896875/

相关文章:

javascript - 如果 JSON 属性包含特定字符而不使用 JSON.stringify,则重命名 JSON 属性

c++ - 使用计时器和信号而不是 sleep c/c++

C# 任务调度器查询

javascript - 跨平台SVG旋转动画:

javascript - 使用 JavaScript 将 HTML 字符串加载到 iframe

jquery - 如何在 MVC 中单击按钮时选中复选框?

jQuery UI 调整自定义句柄的大小,而不是调整大小的元素的子元素

javascript - 如果用户不使用浏览器,jQuery 计时器就会停止

javascript - 使用复选框从 jquery 自动完成中选择多个选项

javascript - 我无法在我的 div 中找到结果