序言
补充上次setInterVal的解释
setInterVal的弊端
- setInterval 对自己调用的代码是否报错漠不关心。即使调用的代码报错了,它依然会持续的调用下去
- setInterval 无视网络延迟。在使用 ajax 轮询服务器是否有新数据时,然而无论网络状况如何,它都会去一遍又一遍的发送请求,如果网络状况不良,一个请求发出,还没有返回结果,它会坚持不懈的继续发送请求,最后导致的结果就是请求堆积。
- setInterval 并不定时。如果它调用的代码执行的时间小于定时的时间,它会跳过调用,这就导致无法按照你需要的执行次数或无法得到你想要的结果。
1. 标准中,setInterval() 如果前一次代码没有执行完,则会跳过此次代码的执行。
2. 浏览器中,setInterval() 如果前一次代码没有执行完,不会跳过此次代码,而是将其插在队列中,等待前一次代码执行完后立即执行。
3. Node中,setInterval()会严格按照间隔时间执行。
- setInterval 做动画时低频会有卡顿现象,尤其是在低端机型使用
解决方案
可以使用setTimeout来替代,调用自己本身,循环调用。