2017-03-22 82 views

回答

2

setTimeout返回timeoutID值,您可以使用要求使用以後停止計時器

var timeoutId = setTimeout(myfunction(), interval); 
clearTimeout(timeoutId); 
+1

直接執行函數,而不是傳遞引用,超時不尊重的setTimeout不起作用。刪除此錯誤導致永遠不會執行該功能,因爲超時與間隔相同。 – baao

+0

是的,但這只是一個例子,你可以清除你創建的 – mic4ael

1

您的代碼,尤其是在一起,就沒有意義了。首先,你需要一個函數的引用傳遞給setTimeout,而不是直接執行它,

setTimeout(myfunction, 1000); 

否則的setTimeout有沒有任何影響和作用將只是沒有超時被執行。

現在,如果我們修復這個錯誤,我們得到的是setIntervalsetTimeout的間隔是相同的。如果您想停止執行我們傳遞給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"); 
 
}

+0

非常好的超時時間。我理解你。 –

+0

但你可以告訴我嗎?因爲我不能使邏輯工作。 –

相關問題