我有一個運行在每個時間間隔的函數,我需要在再次運行它之前停止該函數。node/js在再次運行之前停止該功能
類似於下面的代碼。
var interval = 1000*60*3.14159;
setInterval(function(){
setTimeout(myfunction(), interval)
}, interval);
我有一個運行在每個時間間隔的函數,我需要在再次運行它之前停止該函數。node/js在再次運行之前停止該功能
類似於下面的代碼。
var interval = 1000*60*3.14159;
setInterval(function(){
setTimeout(myfunction(), interval)
}, interval);
setTimeout
返回timeoutID
值,您可以使用要求使用以後停止計時器
var timeoutId = setTimeout(myfunction(), interval);
clearTimeout(timeoutId);
您的代碼,尤其是在一起,就沒有意義了。首先,你需要一個函數的引用傳遞給setTimeout
,而不是直接執行它,
setTimeout(myfunction, 1000);
否則的setTimeout有沒有任何影響和作用將只是沒有超時被執行。
現在,如果我們修復這個錯誤,我們得到的是setInterval
和setTimeout
的間隔是相同的。如果您想停止執行我們傳遞給setTimeout
的函數,則每次setInterval
刻度時,由於您指定的時間間隔相同,您的setTimeout
將被中斷且永不執行。下一個滴答會在它做一件事之前停止該功能。
見這個例子 - 發現什麼也沒有發生:
var interval = 1000;
setInterval(function(){
var i = setTimeout(myfunction, interval)
clearTimeout(i);
}, interval);
function myfunction() {
\t console.log("you'll never see me");
}
非常好的超時時間。我理解你。 –
但你可以告訴我嗎?因爲我不能使邏輯工作。 –
直接執行函數,而不是傳遞引用,超時不尊重的setTimeout不起作用。刪除此錯誤導致永遠不會執行該功能,因爲超時與間隔相同。 – baao
是的,但這只是一個例子,你可以清除你創建的 – mic4ael