扫码关注官方订阅号
用setTimeout模拟定时器比setInterval相比有什么优势?
我这里在补充说明一下吧,不知道楼主是否有使用过iOS的webview,或者Safari,这两个浏览器有一个特点就是在滚动的时候是不执行JS的,如果使用了setInterval,会发现在滚动结束后会执行多次由于滚动不执行JS积攒回调,如果回调执行时间过长,就会非常容器造成卡顿问题和一些不可知的错误,但是使用setTimeout就依然只会执行一次,执行结束后再准备执行下一次
在滚动的时候是不执行JS的
setInterval
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是某个时间段之内。某个时间段之后的范围比较大,某个时间段内的范围比较小。所以,你的提问有问题。
只使用setTimeout循环调用
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我这里在补充说明一下吧,不知道楼主是否有使用过iOS的webview,或者Safari,这两个浏览器有一个特点就是
在滚动的时候是不执行JS的,如果使用了setInterval,会发现在滚动结束后会执行多次由于滚动不执行JS积攒回调,如果回调执行时间过长,就会非常容器造成卡顿问题和一些不可知的错误,但是使用setTimeout就依然只会执行一次,执行结束后再准备执行下一次个人觉得主要是忘记清除的话setTimeout只会执行一次就没有了,setInterval一直执行,会占用资源。
优势, 有一点就是setInterval 这个时间不准确,跑跑 就有时间差了。
个人一般不用setInterval 只使用setTimeout
看你的需求了,如果需要轮询去查后台给回来的数据,那就必须用setInterval,可以无限次查询,直到你清除定时器为止。如一楼所说,定时器肯定会占用资源,所以setInterval必须setTimeOut,因为js的执行为单线程,每次都会执行一次,当然会占用资源
定时器其实都不准,无论setTimeout还是setInterval。
setTimeout是某个时间段之后,setInterval是某个时间段之内。
某个时间段之后的范围比较大,某个时间段内的范围比较小。
所以,你的提问有问题。
只使用setTimeout循环调用