js中两种定时器的本质区别

2017-07-26  本文已影响94人  sdcV
这里主要介绍常用的setTimeout 和 setInterval。
  1. 两个共同点:
  1. 两个本质上的不同:异步调用运行机制不同

<b>如果上面代码中的onclick事件处理程序执行了300ms,那么定时器的代码至少要在定时器设置之后的300ms后才会被执行。队列中所有的代码都要等到javascript进程空闲之后才能执行,而不管它们是如何添加到队列中的.</b>

3、为了避免setInterval()定时器的问题,可以使用链式setTimeout()调用。

setTimeout(function fn(){
    setTimeout(fn,interval);
},interval);

<b>这个模式链式调用了setTimeout(),每次函数执行的时候都会创建一个新的定时器。第二个setTimeout()调用当前执行的函数,并为其设置另外一个定时器。这样做的好处是,在前一个定时器代码执行完之前,不会向队列插入新的定时器代码,确保不会有任何缺失的间隔。而且,它可以保证在下一次定时器代码执行之前,至少要等待指定的间隔,避免了连续的运行。</b>

上一篇 下一篇

猜你喜欢

热点阅读