我有一個TimeOut不會停止,一旦清除使用它,我不確定爲什麼。無法清除TimeOut
這是我的函數:
function upgrade_bar(end, start, bar, timerId, func) {
var per = ((new Date().getTime()/1000) - start)/(end - start) * 100;
if(per>100)per=100;
if(per<0)per = 0;
if(per == 0) {
bar.style.width = per + "%";
} else if(per == 100) {
clearTimeout(timerId); //this does not stop it
if(func !== false){
func(); //this does call at 100%
}
} else{
bar.style.width = per+ "%";
}
console.log('still going');
timerId = setTimeout(function() { upgrade_bar(end, start, bar, timerId, func) } , 17);
}
都誤解我這個是什麼?不是timerId保持超時的Id讓我清除它?
啊所以我很困惑它與SetInterval。確定一個簡單的'return false'應該結束它,而不是清除它? 也爲什麼clearTimeOut甚至存在,那麼它會有什麼用處。 – Sir
@Dave我見過的一個地方clearTimeout用於自動完成。當一個鍵被按下時,你開始超時500毫秒,但如果用戶鍵入另一個字符,則取消它。這樣,它將不會實際執行,直到沒有輸入500毫秒。 –
@Dave我已經更新了我的答案來解釋它。基本上,可以在達到時間之前調用clearTimeout來取消它。 – jcsanyi