javascript - 用setTimeout模拟定时器比setInterval相比有什么优势?
巴扎黑
巴扎黑 2017-04-11 12:59:31
[JavaScript讨论组]

用setTimeout模拟定时器比setInterval相比有什么优势?

巴扎黑
巴扎黑

全部回复(6)
怪我咯

我这里在补充说明一下吧,不知道楼主是否有使用过iOS的webview,或者Safari,这两个浏览器有一个特点就是在滚动的时候是不执行JS的,如果使用了setInterval,会发现在滚动结束后会执行多次由于滚动不执行JS积攒回调,如果回调执行时间过长,就会非常容器造成卡顿问题和一些不可知的错误,但是使用setTimeout就依然只会执行一次,执行结束后再准备执行下一次

大家讲道理

个人觉得主要是忘记清除的话setTimeout只会执行一次就没有了,setInterval一直执行,会占用资源。

黄舟

优势, 有一点就是setInterval 这个时间不准确,跑跑 就有时间差了。

var index = 0;
setTimeout(function(){
        index++;
        console.log(index)
      setTimeout(arguments.callee,1000)
      
},1000)

个人一般不用setInterval 只使用setTimeout

阿神

看你的需求了,如果需要轮询去查后台给回来的数据,那就必须用setInterval,可以无限次查询,直到你清除定时器为止。如一楼所说,定时器肯定会占用资源,所以setInterval必须setTimeOut,因为js的执行为单线程,每次都会执行一次,当然会占用资源

黄舟

定时器其实都不准,无论setTimeout还是setInterval。
setTimeout是某个时间段之后,setInterval是某个时间段之内。
某个时间段之后的范围比较大,某个时间段内的范围比较小。
所以,你的提问有问题。

PHP中文网

只使用setTimeout循环调用

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

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