0
点赞
收藏
分享

微信扫一扫

如何使setTimeout准时执行

墨香子儿 2022-03-14 阅读 48

很多人认为 setTimeout 是延时多久,那就应该是多久后执行。

其实这个观点是错误的,因为 JS 是单线程执行的,如果前面的代码影响了性能,就会导致 setTimeout 不会按期执行。

采用系统时间补偿法:修正每次时间间隔,前面耽误了时间,那么就缩小当前定时器的间隔时间

 

如情况1:前一个定时推迟了17ms,为了在100ms的时候执行两次定时器,所以第二次定时器的时间就设置为33ms

Offset=现在的时间(67ms)-执行一个定时器消耗的时间(50ms)=时间差(17ms)

 offset = new Date().getTime() - (startTime + count * interval);

Cur=原来的定时器间隔时间(50ms)-时间差(17ms)=33ms(则下次定时器的时间间隔设置为33ms)

 

举报

相关推荐

0 条评论