settimeout递归实现定时器才做和setinterval有什么区别?

这两个性能上有没有什么区别呢?
长时间执行会不会因为对内存的消耗而卡死呢?
在平时用的时候,应该首选用settimeout递归实现还是直接用setinterval呢?

阅读 4.5k
2 个回答

1、性能区别不大。
2、基本上不会的。
3、如果只是延迟执行一次,就用settimeout,否则用setinterval

记得老版本的 IE 使用 setInterval 的话,一旦窗口最小化再回来,就会在瞬间一股脑执行这期间堆积的回调,所以我一直以为这就是 setInterval 的毛病,长时间拒绝食用 setInterval。后来发现现代浏览器并不会存在这个问题?

性能和内存开销不存在差异的,做动画的 requestAnimationFrame 就是类似递归 setTimeout 啊( setTimeout 做 fallback 不是吗?)。所以适合递归的就用 setTimeout 递归,没什么明显递归特性就用 setInterval。但是他俩还是有区别的,试想如果每 1000ms 需要执行一次任务,每次任务执行耗时 100ms,那么递归 setTimeout 和直接 setInterval 区别就体现出来啦。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题