javascript:清除所有超时?
2022-08-30 04:38:57
有没有办法从给定的窗口清除所有超时?我假设超时存储在对象中的某个位置,但无法确认。window
欢迎任何跨浏览器解决方案。
有没有办法从给定的窗口清除所有超时?我假设超时存储在对象中的某个位置,但无法确认。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]);
}