javascript - setInterval()有时候会有延迟,该如何解决?
PHP中文网
PHP中文网 2017-04-11 11:03:31
[JavaScript讨论组]

setInterval()有时候会有延迟,该如何解决?

PHP中文网
PHP中文网

认证0级讲师

全部回复(6)
黄舟

用setTimeout代替setInterval

迷茫

setInterval 和 setTimeout 都是异步执行, 也就是说要等所有同步执行的代码执行完毕才会开始...

所以如果其他同步执行的代码复杂, 需要大量计算时间, 那么定时器也会相对延迟执行...

这是没有办法的...

setTimeout(()=>{
   console.log(1)
}, 0)
for (var i=0; i<=1000000000; i++) {

}

执行上面代码, 你会明显感觉到

PHP中文网

可以试试 web worker。在服务器端执行js

我之前在博客里讨论过这个,你可以看看 http://www.xiabingbao.com/javascript/2015/04/20/javascript-timer

ringa_lee

setInterval和setTimeout的延迟根本是无法解决的问题,浏览器执行JS代码是单线程的,如果有费时代码,这两个方法的延迟就更不可接受了。另外还看应用场景啊,比如做声音同步,可以用播放的当前时间为基准来获取时间,这样同步就不会出错了。

大家讲道理

先清除,再执行。

怪我咯

延遲是沒發根本緩解的,盡量使用settimeout代替setinterval

SetInterval(A,T)

改寫為

A(){

  setTimeout(A,T)

}

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号