setInterval
setInterval(function,time) //function为要执行的函数,time为间隔时间
setTimeout
setTimeout(function,time) //function为要执行的函数,time为时间间隔
定时器的休眠
当浏览器tab页处于非激活状态下(浏览器最小化或切向其它tab页)时,基于节能考虑,定时器会处于“休眠”或“降频”状态,但是定时器会在运行队列当中排列。
当浏览器tag页再次处于激活状态时,所有的定时器会在同一时间执行。
解决定时器的休眠方法一
用setTimeout()方法实现递归调用,替代setInterval()。
解决定时器的休眠方法二
当浏览器tag页面处于非激活状态时,清除定时器。
当浏览器tag页面处于激活状态时,启动定时器。
document.onvisibilitychange = function () {
if (document.visibilityState == "visible") {
timer = setInterval(autoplay, 2000);
} else {
clearInterval(timer);
}
}