Jen*_*ens 23 javascript jquery timer
我正在使用jQuery .load为我的网站构建一个自动刷新评论部分.所以我使用javascript'setTimeout'计时器来检查新的评论.
但是在做了一些改变评论页面或删除(所有使用ajax)之类的东西后,一些旧的计时器继续运行,即使我在加载新的ajax内容之前使用了clearTimeout.
当我加载新的ajax内容时,有没有办法清除所有javascript计时器?
Oma*_*awi 42
警告:我的代码以下是有问题的,主要是因为要求本身是有问题的.我想知道你为什么要以任何方式清除所有计时器.这使得您的代码破坏了使用计时器的任何插件.这比你想象的要常见得多,除非你正在调试或玩得开心,否则没关系.
如果你必须:
这是最糟糕的解决方案之一.然而,它揭示了JavaScript本身的潜在安全漏洞.但是因为它只是工作(清除所有的计时器)我认为分享它会很酷:
var maxId = setTimeout(function(){}, 0);
for(var i=0; i < maxId; i+=1) {
clearTimeout(i);
}
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 24
javascript中没有通用功能允许您清除所有计时器.您需要跟踪您创建的所有计时器.为此,您可以使用全局数组:
var timers = [];
...
// add a timer to the array
timers.push(setTimeout(someFunc, 1000));
...
// clear all timers in the array
for (var i = 0; i < timers.length; i++)
{
clearTimeout(timers[i]);
}
Run Code Online (Sandbox Code Playgroud)