亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于 setTimeout 延時執行時機不準確的問題

老師,我對 `setTimeout` 的執行時機不精確的原因理解,不知道正不正確:

1. 瀏覽器執行 JS 是基于事件循環的,我假設每執行一次 tick 的間隔是 17ms,我定義了一個延時函數在 18 ms 后進行。假設第一個 tick 瞬間完成,那么完成瞬間的時間戳是 0,等待 17ms 后執行第二次 tick,此時發現那個延時函數還沒到時,所以不執行,于是等下一次 tick 也就是 34 ms 時才執行,所以導致時機不準確。

2. 每一次 tick 執行的時間不固定。就基于剛說的第一點,延時函數在第三個 tick 進行,但是由于是異步的,所以在同步代碼執行完才執行,假設第三次 tick 的同步代碼執行時間較長,于是這個函數的執行時機又延長了。

那這,`setTimeout` 真正執行的時機只會往后不會往前。不知道我說的對不對,請老師更正或補充一下。

正在回答

1 回答

setTimeout執行不精確,就JS講的話,就是異步機制的問題,它是到了那個時間將異步任務添加到執行隊列里面去,不代表到了那個時間就執行異步任務。和這個項目本身沒什么關系。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于 setTimeout 延時執行時機不準確的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號