setInterval

  1. setInterval(function,time) //function为要执行的函数,time为间隔时间

setInterval定时器没有被清除时一直执行

setTimeout

  1. setTimeout(function,time) //function为要执行的函数,time为时间间隔

setTimeout定时器只执行一次

定时器的休眠

当浏览器tab页处于非激活状态下(浏览器最小化或切向其它tab页)时,基于节能考虑,定时器会处于“休眠”或“降频”状态,但是定时器会在运行队列当中排列。
当浏览器tag页再次处于激活状态时,所有的定时器会在同一时间执行。

解决定时器的休眠方法一

用setTimeout()方法实现递归调用,替代setInterval()。

解决定时器的休眠方法二

当浏览器tag页面处于非激活状态时,清除定时器。
当浏览器tag页面处于激活状态时,启动定时器。

  1. document.onvisibilitychange = function () {
  2. if (document.visibilityState == "visible") {
  3. timer = setInterval(autoplay, 2000);
  4. } else {
  5. clearInterval(timer);
  6. }
  7. }