ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[https://segmentfault.com/a/1190000011282175](https://segmentfault.com/a/1190000011282175) 区别: ![](https://img.kancloud.cn/7c/08/7c085ebb2a4d49a31f9d607773d6d4c8_2332x1034.png) ## setTimeout 遇到的问题 1. 执行间隔 setTimeout 第二个参数每个浏览器有自己的最低的时间间隔(4ms),如果低于这个能识别到的间隔时间,就会按注册顺序执行 2. this 指向问题 - 隐式丢失 var obj = {foo: function(){console.log(this)}} setTimeout(obj.foo, 1000) // window [MutationObserver](MutationObserver.md)## setInterval 遇到的问题 1. 执行间隔 - 浏览器最低执行的时间间隔是 10ms 2. **无法保证一个任务执行结束和下一个任务开始执行的时间间隔** ## setTimeout 模拟 setInterval ``` function _setInterval (cb, interval) { cb() setTimeout(() => { _setInterval(cb, interval) }, interval) } function like () { console.log('lalalla') } _setInterval(like, 2000) ```