setTimeout
setTimeout并没有一开始把回调函数挂在事件循环队列中
。它所做的是设定一个定时器。当定时器到时后,宿主环境把回调函数放在事件循环队列中。这样,在未来的某个时刻,js引擎就会去执行这个回调。
如果定时器到时后,事件循环队列中已经有多个项目会怎样呢?
【setTimeout】回调函数的处理将会等待
,它得排在已有的事件之后——通常没有抢占式
的方式支持将当前事件排在事件队列首部
。这解释了为什么setTimeout()定时器的精度不高
。它只会确保回调函数不会在指定的时间间隔之前执行,可能会在那个时刻执行,也可能在那之后执行,根据事件循环队列的状态
而定。
推荐阅读
- 抱怨并没有任何意义
- 人生,并没有你想象的那么艰难.
- 大学里并没有理想中的恋情
- 高考、复读并没有想象中的那么可怕
- promise与setTimeout的执行顺序问题
- 《并没有什么爱的卑微》
- Android系统原生的旋转和位置动画并没有真正改变view的位置
- 两种定时器方法的区别
- 我们也许并没有想象中那么热爱阅读——1200bookshop(二囍)
- 我想也许他并没有那么爱我