[英]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)
来测试这一点。 因此,它不只是打印“间隔”,而是会打印出引用间隔对象的变量的值。 这由一个数字表示,该数字将在每次间隔停止和重新启动时发生变化。
需要明确的是,间隔不能恢复,只有新的开始和现有的停止。
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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.