为什么使用定时器的时机选择不一样

使用定时器并不是到时间之后,就会执行相对应的函数,只是会把函数push到任务队列中。setInterval如果队列中的上一次任务还没有执行的话,会跳过push过程。

setInterval有两个缺点:

  1. 使用setInterval时,某些间隔会被跳过;
  2. 可能多个定时器会连续执行;

可以这么理解:每个setTimeout产生的任务会直接push到任务队列中;而setInterval在每次把任务push到任务队列前,都要进行一下判断(看上次的任务是否仍在队列中)

因而我们一般用setTimeout模拟setInterval,来规避掉上面的缺点。

posted @ 2022-01-10 09:34  启豪  阅读(54)  评论(0)    收藏  举报