繁体   English   中英

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)来测试这一点。 因此,它不只是打印“间隔”,而是会打印出引用间隔对象的变量的值。 这由一个数字表示,该数字将在每次间隔停止和重新启动时发生变化。

需要明确的是,间隔不能恢复,只有新的开始和现有的停止。

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM