setInterval()有时候会有延迟,该如何解决?
setInterval 和 setTimeout 都是异步执行, 也就是说要等所有同步执行的代码执行完毕才会开始...
所以如果其他同步执行的代码复杂, 需要大量计算时间, 那么定时器也会相对延迟执行...
这是没有办法的...
setTimeout(()=>{
console.log(1)
}, 0)
for (var i=0; i<=1000000000; i++) {
}
执行上面代码, 你会明显感觉到
可以试试 web worker
。在服务器端执行js
我之前在博客里讨论过这个,你可以看看 http://www.xiabingbao.com/javascript/2015/04/20/javascript-timer
setInterval和setTimeout的延迟根本是无法解决的问题,浏览器执行JS代码是单线程的,如果有费时代码,这两个方法的延迟就更不可接受了。另外还看应用场景啊,比如做声音同步,可以用播放的当前时间为基准来获取时间,这样同步就不会出错了。
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
用setTimeout代替setInterval