关于setInterval的几点

1、Javascript是单线程,异步操作以队列形式处理,无法立即执行的操作将排入处理队列中。

2、setInterval会保证任一时刻,处理队列中至多有一个interval handler存在,因此,假如setInterval(fn, 10), 在处理队列中已经排入一个fn的处理计划fn1,如果超过10ms后fn1仍无法被执行,则新的fn处理计划fn2将被排入处理队列,并将fn1从处理队列中删除。

3、如果setInterval产生的interval handler无法被立即执行,则无论当前执行的何种处理,interval handler都会被加入处理队列中,也就意味着,如果一个新的interval handler被触发的时候恰巧是前一个interval handler正在执行,则新的interval handler依然会被加入处理队列,也就无法保证两个interval handler执行之间的时间间隔,甚至可能2个interval handler连续执行。

 

综上,setInterval容易收各种因素的影响,容易产生不可预期的问题,慎用。 

posted on 2010-02-21 22:49  Para  阅读(346)  评论(0编辑  收藏  举报

导航