谈setTimeout 与 setInterval区别

一,这两个东西用得最多的是在动画。setTimeout 一般是递归调用,来实现循环。不必维护setTimeout句柄,因为只是调用一次执行一次。setInterval 调一次执行多次,一般要维护setInterval句柄,除非你不想关掉它。所以根据这一点来说,setInterval性能肯定要高。因为setTimout想要实现循环,必须不停地创建,释放,创建。。。而setInterval不用。



二,setTimeout被用得更广泛。前面说了,它的效率低,为何还用得比较广泛呢?原因在于,setInterval不安全。setInterval 会每隔设定的时间间隔,向一个队列里面压入我们的逻辑方法。当这个方法执行完了后会自己出队列。要是这个方法执行得很久,且时间间隔又相对较小,那么这个队列就会很长,以至于耗尽内存。这也是各种大牛不愿使用setInterval的原因。



三,二者的时间间隔调用都是不精确的。都要等实际的代码执行完后才调用。比如setTimout所掉的方法需要执行1000ms,但是setTimeout的时间间隔为10ms,那么它至少也要等1000ms甚至更久才能再次调用。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值