扫码关注官方订阅号
84669人学习
65727人学习
82984人学习
467778人学习
498837人学习
471966人学习
256484人学习
152542人学习
224170人学习
139536人学习
81804人学习
85022人学习
11944人学习
20001人学习
60816人学习
5487人学习
15007人学习
2150人学习
6980人学习
194925人学习
359900人学习
1142人学习
19058人学习
3206人学习
180550人学习
48569人学习
17603人学习
40936人学习
1049人学习
750人学习
32909人学习
setInterval()有时候会有延迟,该如何解决?
认证0级讲师
用setTimeout代替setInterval
setInterval 和 setTimeout 都是异步执行, 也就是说要等所有同步执行的代码执行完毕才会开始...
所以如果其他同步执行的代码复杂, 需要大量计算时间, 那么定时器也会相对延迟执行...
这是没有办法的...
setTimeout(()=>{ console.log(1) }, 0) for (var i=0; i<=1000000000; i++) { }
执行上面代码, 你会明显感觉到
可以试试 web worker。在服务器端执行js
web worker
我之前在博客里讨论过这个,你可以看看 http://www.xiabingbao.com/javascript/2015/04/20/javascript-timer
setInterval和setTimeout的延迟根本是无法解决的问题,浏览器执行JS代码是单线程的,如果有费时代码,这两个方法的延迟就更不可接受了。另外还看应用场景啊,比如做声音同步,可以用播放的当前时间为基准来获取时间,这样同步就不会出错了。
先清除,再执行。
延遲是沒發根本緩解的,盡量使用settimeout代替setinterval
SetInterval(A,T)
改寫為
A(){
setTimeout(A,T)
}
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号
精品班
技术支持
技术咨询
学习群
会员优惠
返回顶部
用setTimeout代替setInterval
setInterval 和 setTimeout 都是异步执行, 也就是说要等所有同步执行的代码执行完毕才会开始...
所以如果其他同步执行的代码复杂, 需要大量计算时间, 那么定时器也会相对延迟执行...
这是没有办法的...
执行上面代码, 你会明显感觉到
可以试试
web worker
。在服务器端执行js我之前在博客里讨论过这个,你可以看看 http://www.xiabingbao.com/javascript/2015/04/20/javascript-timer
setInterval和setTimeout的延迟根本是无法解决的问题,浏览器执行JS代码是单线程的,如果有费时代码,这两个方法的延迟就更不可接受了。另外还看应用场景啊,比如做声音同步,可以用播放的当前时间为基准来获取时间,这样同步就不会出错了。
先清除,再执行。
延遲是沒發根本緩解的,盡量使用settimeout代替setinterval
SetInterval(A,T)
改寫為
A(){
}