嵌套的 setInterval 和 setTimeout
Nested setInterval and setTimeout
我有这样的东西:
var activityTextToggleTimerTwo = setInterval(function() {
active_users_text.toggleClass("active inactive bounce bounceOutUp")
var activityTextToggleTimerThree = setTimeout(function() {
active_users_text.toggleClass("active inactive bounce bounceOutUp");
}, 5000);
}, 25000);
我尝试像这样清除超时/间隔:
clearInterval( activityTextToggleTimerTwo );
clearTimeout( activityTextToggleTimerThree );
我得到一个例外:
Uncaught ReferenceError: activityTextToggleTimerThree is not defined
为什么?另外,我认为活动TextToggleTimerThree不会被清除。
谢谢
您的变量超出了范围,因为它是在 setInterval
的回调中定义的。您必须将其移动到外部范围,但您可能仍然会遇到一个问题:每次执行setInterval
回调时,您都将替换该变量中的计时器处理程序,因此您只能清除最新的setTimeout
计时器。
将 .clearInterval()
方法放在 .setInterval()
匿名函数中,如下所示:
// assuming you have active_users_text defined
var rotations = 0;
var activityTextToggleTimerTwo = setInterval(function(){
active_users_text.toggleClass('active inactive bounce bounceOutUp');
// change 1 if you want
if(rotations < 1){
var activityTextToggleTimerThree = setTimeout(function(){
active_users_text.toggleClass('active inactive bounce bounceOutUp');
}, 5000);
}
// change 75000 if you want
if(rotations++ == 75000){
clearInterval(activityTextToggleTimerTwo);
}
}, 25000);
setTimeout()
不需要使用此方法清除。
相关文章:
- setInteval vs setTimeout
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- setTimeout可以与闭包内的函数一起使用吗
- Javascript setTimeout for an array
- 刷新后,setTimeout将工作或不工作
- 继续使用javascript中的setTimeout
- setTimeout函数能否在其前面的代码执行之前激发
- jQuery setTimeOut: in for-loop
- SetTimeout and clearTimeout in Javascript
- 在setTimeout中调用相同的函数
- setTimeout不能太长
- Javascript-SetTimeout导致浏览器冻结
- setTimeout and V8
- 将jQuery对象传递到setTimeout递归函数中
- 是定义的操作系统睡眠/挂起期间setTimeout的行为
- 添加一个setTimeout方法会使jQuery悬停方法忽略setTimeout方法中的函数
- JS:setTimeout函数的UI计数
- 使setInterval和setTimeout工作时出现问题
- 为什么setTimeout适用于无休止的递归调用
- settimeout调用的函数未结束