簡體   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