今天爱分享给大家带来js中.setInterval 存在的问题如何解决【面试题详解】,希望能够帮助到大家。
定时器的代码执行部分不断的被调入任务队列中,如果定时器的执行时间比间隔时间长,最终可能导致定时器堆叠在一起执行。
js 引擎为了解决这个问题,采用的方式是若任务队列中存在这个定期器,则不会将新的定时器放入任务队列,这样做的弊端是可能导致某些间隔被跳过。
解决方法:循环调用setTimeout来实现setInterval:(即用setTimeout来实现setInterval
setTimeout(function fn(){ ... setTimeout(fn,delay) },delay)