那對前端程式 javascript 又有什麼影響呢?
使用 setTimeout 或者是 setInterval 就會影響很大。對於 setTimeout ,經測試,執行 function 的時間是不變的,步驟如下:
- 假設 setTimeout 的時間為 300 * 1000 (五分鐘)
- 在這五分鐘的期間,可以 休眠、關閉手機,或是切換到別的 tab
- 五分鐘後,function 會準時被 fire ,但如果此時是切換到別的 tab ,被 fire 的 function 會執行很慢,可能原本 1ms 就可以跑完的,要跑 100ms 都不太意外。
- 但是如果五分鐘後,你的手機是關閉或是電腦是休眠,那當然就不會執行。
至於 setInterval ,如果你是每秒一定要執行一次的東西,如果中間手機關閉一分鐘,一分鐘後讓手機回神過來,並不會給你補個60槍。你可能設定每秒跑一次,預期60秒要增加60次,執行結果會變成只增加 55 次。
因此,如果要在頁面上呈現數位時鐘,那建議以時間差來做計算,頁面時間差一秒,會被客訴的。