2013-08-27 28 views
0

如果我給一個JavaScript setTimeout函數一個ID,那麼我該如何執行或觸發它?給一個超時函數一個Id,但那我該如何觸發它?

var timerId = setTimeout(function(){alert('doh')}, 1000); 
//timerId; doesn't work, 
//trigger it here 
clearTimeout(timerId) 
+1

你的意思是,執行它?它應該在1000ms後自動啓動 – SimonR

+2

如果您希望setTimeout調用起作用,請刪除clearTimeout行。 – j08691

回答

2

調用setTimeout()的動作應該執行它。我相信你所要做的就是讓這一行動每秒重演一次。對於您需要使用setInterval()代替:

var timerId = setInterval(function(){alert('doh')}, 1000); 
// you'll get an alert every second untill clearTimeout(timerId) is called. 

由於@j08691說,你可能沒有看到警報,因爲你打電話clearTimeout()你叫setTimeout()後立刻。


作爲一個側面說明,你可能不希望使用alert()功能調試此作爲警報是一個阻擊戰 - 正在顯示警報沒有其他JS將被執行。對於這種類型的調試,使用console.log()會更好。它不會阻塞,可以讓您輕鬆檢查變量。

0

唯一使用返回值setTimeout已經是取消定時器,你已經用clearTimeout做了。

如果你想早點觸發它,那麼你應該清除它,然後調用原始函數。

例如:

function doh(){ 
    alert('doh') 
} 

var timerId = setTimeout(doh, 1000); 
clearTimeout(timerId) 
doh(); 
相關問題