ClearInterval函数在我的情况下不起作用
ClearInterval function doesn't work in my case
function active_timer(){
var time = 5000;
interval = setInterval(function(){
console.log('interval');
},time);
}
active_timer();
socket.on('timer', function (data) {
console.log('here') // it triggered
clearInterval(interval); // don't work
active_timer() //resume
});
我试过这个,它不会工作,因为console.log仍然触发每5秒。任何线索为什么?
你的代码在技术上是正确的,但你的控制台日志是误导。
你已经开始了一个间隔,每5秒触发一次。每次套接字触发时,您都会清除间隔,但随后立即启动一个新间隔。这给人一种间隔中没有间隔的错觉,但实际上是有间隔的。
您可以通过将console.log('interval')
更改为console.log(interval)
来测试这一点。因此,它不只是打印"interval",而是打印引用interval对象的变量的值。这由一个数字表示,该数字将在每次停止和重新启动间隔时改变。
需要说明的是,一个时间间隔不能被恢复,只有新的时间间隔开始,现有的时间间隔停止。
var interval = null;
function startTimer() {
// store the reference to our interval
interval = setInterval(function() {
console.log('triggered interval', interval);
}, 2000);
console.log('new interval started', interval);
}
startTimer();
// button click to simulate your socket event
$('#simulate').on('click', function() {
console.log('received simulated event');
clearInterval(interval);
startTimer();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="simulate">Simulate Socket Event</button>
相关文章:
- 为什么jQuery悬停方法在这种情况下不起作用
- 为什么push方法没有'在这种情况下不起作用:[].推
- 倒计时在某些情况下不起作用
- res.download()在我的情况下不起作用
- 为什么getElementbyId在这种情况下不起作用
- $animate.removeClass 在没有 $evalAsync inside 指令的情况下不起作用
- 为什么 array.indexOf(undefined) 在数组稀疏的情况下不起作用
- 多次点击功能在不重新加载页面的情况下不起作用
- 数据绑定在特定情况下不起作用(AngularJS)
- UI 路由加载微调器在没有$timeout的情况下不起作用
- 为什么原型JavaScript在这种情况下不起作用
- ng-重复运行次数与整数参数一样多在某些情况下不起作用
- AngularJS指令在元素具有绑定值的情况下不起作用
- 为什么隐藏/显示(向上滑动/向下滑动)在这种情况下不起作用
- $('option').mousedown 事件在少数情况下不起作用
- Angular JS自定义指令在没有ng-app指令的情况下不起作用
- Django {{ block.super }} 在特定情况下不起作用
- Ajax 请求在没有警报语句的情况下不起作用
- 替换c#函数bijJquery在不知道如何进行故障排除的情况下不起作用
- clearInterval在特定情况下不起作用(javasripct,jquery)