參考文檔segmentfault
setInterval
1. 「丟幀」現象(setInterval()僅當沒有該定時器的任何其餘代碼實例時,纔將定時器代碼添加到隊列中)
2. 代碼的執行間隔 <= 預期
複製代碼
- 在1.7s處,func1在執行,func2在隊列裏等待執行,func2就是該定時器的代碼實例,按照JS引擎的處理,func3不會加入到事件隊列裏,更別說執行了,這就致使出現了「丟幀」現象
- 在2s處,func1執行完畢,此時線程空閒,func2開始執行,這就使得func1和func2之間沒有時間間隔,違背咱們所預期的500ms產生一次結果
setTimeout
- 確保不會缺失時間間隔(如:2s ~ 2.5s ;3.5s ~ 4s)