比较setInterval和setTimeout加递归的效率
2017-02-15 00:00
260 查看
说到setInterval,就不得不提到setTimeout,二者都是用于定时执行某函数,区别在于setTimeout只执行一次,而setInterval可以一直连续不断执行下去,典型用法如下:
?
?
表面看上去,二者各有各的用途,没什么问题。但是如果setInterval所执行的函数是比较耗时的动作,setInterval仍然会按照原计划安排调用那个函数,而不考虑之前的任何阻塞,这样随着时间的推移,队列中等待执行的函数就会越来越多。而对于此问题解决方案仍然是采用递归调用setTimeout的方法,如:
?
这种递归调用的方式,既可以达到循环执行某函数的目的,有可以防止后续任务不断堆积。
如果你觉得这种方式有点罗嗦,还可以再写得精炼一些:
?
说是这么说,但是如果定时执行的任务开销很少,setInterval一般是没什么问题的,但是如果任务开销比较大,请务必使用setTimeout。
1 |
1 2 |
1 2 3 4 5 6 7 8 |
如果你觉得这种方式有点罗嗦,还可以再写得精炼一些:
1 2 3 4 |
相关文章推荐
- 递归与非递归效率比较
- 迭代 递归 尾递归 效率比较
- ACM--递归效率的比较
- 三种语言递归效率的比较matlab,python,c,lisp....
- 堆排序、快速排序(递归与非递归)、归并排序效率比较
- 递归的效率问题及递归与循环比较
- 【JAVASCRIPT】递归与循环的效率比较
- 递归的效率问题及递归与循环比较
- javascript中实现动画是settimeout(递归)还是用setinterval好?
- setTimeout() 和setInterval()函数的比较
- 递归的效率问题及递归与循环比较
- 递归求和(Recursive)与for循环求和效率问题的简单比较
- 递归和循环效率比较
- equals和==在字符串比较中的效率问题
- js计数器方法setInterval()、clearInterval()、setTimeout()和clearTimeout()
- JS中setInterval与setTimeout的区别
- SQL Server 2005下的分页SQL(效率比较)
- Jquery中使用setInterval和setTimeout 实现定时执行函数
- Java 字符串拼接效率比较
- android中SQLite数据库中用insert同时插入多条记录的方法和效率比较