JavaScript - setTimeout() 與 setInterval() 的不同之處

setTimeout() 的用法
根據 MDN 定義 setTimeout() 用法如下
1 | var timeoutID = scope.setTimeout(function[, delay, param1, param2, ...]); |
- timeoutID :
timerID,為一個正整數,表示定時器的編號,可以傳遞給clearTimeout()來取消定時器 function | code: 要執行的函數或代碼delay: 執行前的延遲,默認為 0,單位是 msparam1、param2: 該函數的參數
範例
myFunction() function 會在一秒後執行
1 | function myFunction() { |
使用 clearTimeout() 取消
我們用 clearTimeout() 來取消剛剛範例中的函式,並且把 timerID 印出來,會發現還是同個 ID,並沒有因為取消而變成 null。
1 | function myFunction() { |
setInterval() 的用法
根據 MDN 定義 setInterval() 用法如下
1 | var intervalID = scope.setInterval(func, [delay, arg1, arg2, ...]); |
- timeoutID :
timerID,為一個非零的數字,表示定時器的編號,可以傳遞給clearInterval()來取消定時器 function | code: 要執行的函數或代碼delay: 每次執行的間隔,單位是 msparam1、param2: 該函數的參數
範例
每間格半秒會執行 myCallback function,myCallback function 則會把字串 Parameter 1、Parameter 2 印出來。
1 | var intervalID = window.setInterval(myCallback, 500, 'Parameter 1', 'Parameter 2'); |
使用 clearInterval() 取消
將 timerID 傳遞給 clearInterval() 取消 setInterval()。
1 | var intervalID = window.setInterval(myCallback, 500, 'Parameter 1', 'Parameter 2'); |
總結
setTimeout(): 是在延遲一段時間後,執行「一次」指定的程式碼setInterval(): 固定延遲一段時間後,執行對應的程式碼,然後「不斷循環」
兩者都會回傳一個獨立的 timerID,該 timerID 傳給 clearTimeout() 和 clearInterval() 用來取消 setTimeout() 和 setInterval() 的執行。
參考資料
JavaScript - setTimeout() 與 setInterval() 的不同之處
http://example.com/2020/12/27/JavaScript-setTimeout-與-setInterval-的不同之處/