Mon*_*RPG 50 javascript postback asynchronous settimeout
我正在使用ajax和asp.net.我有一个javascript函数,它使用setTimeout创建许多其他javascript函数.发生异步回发后,我想禁用所有这些setTimeouted事件.我怎样才能做到这一点?
Sea*_*ney 108
如果您无法访问定时器设置的代码,那么Nick的答案可能不起作用,所以我能想到的就是这个hack.
这是一个黑客,谨慎使用!
// Set a fake timeout to get the highest timeout id
var highestTimeoutId = setTimeout(";");
for (var i = 0 ; i < highestTimeoutId ; i++) {
clearTimeout(i);
}
Run Code Online (Sandbox Code Playgroud)
基本上它抓住了最高的计时器ID,并清除了比这更少的东西.但是也可以清除其他你不想清除的计时器!
Nic*_*ver 101
通话时setTimeout()
,请存储计时器ID,以便清除它.如果您要创建许多超时,那么数组是存储ID的好选择.例如:
var timeouts = [];
//then, store when you create them
timeouts.push( setTimeout( { ... }, 1000) );
Run Code Online (Sandbox Code Playgroud)
然后当你想清除它们时:
for (var i = 0; i < timeouts.length; i++) {
clearTimeout(timeouts[i]);
}
//quick reset of the timer array you just cleared
timeouts = [];
Run Code Online (Sandbox Code Playgroud)
正如下面提到的@Robert,clearTimeout()
如果超时已经发生,则不会抛出错误,因此这里没有竞争/时间问题.
归档时间: |
|
查看次数: |
52823 次 |
最近记录: |