答案前端面试题怎么使用setTi

什么医院能治疗白癜风 http://pf.39.net/bdfyy/

怎么使用setTimeout实现setInterval?

答案解析:

setInterval的作用是每隔一段指定时间执行一个函数,但是这个执行不是真的到了时间立即执行,它真正的作用是每隔一段时间将事件加入事件队列中去,只有当当前的执行栈为空的时候,才能去从事件队列中取出事件执行。所以可能会出现这样的情况,就是当前执行栈执行的时间很长,导致事件队列里边积累多个定时器加入的事件,当执行栈结束的时候,这些事件会依次执行,因此就不能到间隔一段时间执行的效果。

针对setInterval的这个缺点,我们可以使用setTimeout递归调用来模拟setInterval,这样我们就确保了只有一个事件结束了,我们才会触发下一个定时器事件,这样解决了setInterval的问题。

!--思路是使用递归函数,不断地去执行setTimeout从而达到setInterval的效果--functionmySetInterval(fn,timeout){//控制器,控制定时器是否继续执行vartimer={flag:true};//设置递归函数,模拟定时器执行。functioninterval(){if(timer.flag){fn();setTimeout(interval,timeout);}}//启动定时器setTimeout(interval,timeout);//返回控制器returntimer;}

坚持每天花20分钟来学习与思考

不要等到找工作时才狂刷题

提倡每日学习

—END—

扫码


转载请注明:http://www.aierlanlan.com/cyrz/483.html

  • 上一篇文章:
  •   
  • 下一篇文章: