有没有办法清除所有超时?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (58)

是否有一种方法可以清除给定窗口中的所有超时?我认为超时存储在window对象,但无法证实这一点。

欢迎任何跨浏览器解决方案。

提问于
用户回答回答于

它们不在窗口对象中,但是它们有ID,这些ID(AFAIK)是连续整数。

因此,你可以清除所有超时,如下所示:

var id = window.setTimeout(function() {}, 0);

while (id--) {
    window.clearTimeout(id); // will do nothing if no timeout with id is present
}
用户回答回答于

我认为最简单的方法就是存储所有的setTimeout数组中的标识符,你可以在其中轻松地迭代到clearTimeout()所有的人。

var timeouts = [];
timeouts.push(setTimeout(function(){alert(1);}, 200));
timeouts.push(setTimeout(function(){alert(2);}, 300));
timeouts.push(setTimeout(function(){alert(3);}, 400));

for (var i=0; i<timeouts.length; i++) {
  clearTimeout(timeouts[i]);
}

所属标签

可能回答问题的人

  • 女淘日记

    杭州吱吱吱科技 · 站长 (已认证)

    1 粉丝1 提问3 回答
  • 朝夕熊博客

    1 粉丝2 提问3 回答
  • o o

    4 粉丝495 提问2 回答
  • 发条丶魔灵1

    9 粉丝525 提问2 回答

扫码关注云+社区

领取腾讯云代金券