为什么使用定时器的时机选择不一样
使用定时器并不是到时间之后,就会执行相对应的函数,只是会把函数push到任务队列中。setInterval如果队列中的上一次任务还没有执行的话,会跳过push过程。
setInterval有两个缺点:
- 使用setInterval时,某些间隔会被跳过;
- 可能多个定时器会连续执行;
可以这么理解:每个setTimeout产生的任务会直接push到任务队列中;而setInterval在每次把任务push到任务队列前,都要进行一下判断(看上次的任务是否仍在队列中)。
因而我们一般用setTimeout模拟setInterval,来规避掉上面的缺点。