踩了个小坑记录一下
setInterval 接收两个参数,参数1是函数,参数2是毫秒。
如需清除计时器,可将setInterval 赋值给变量再使用clearInterval(变量),
如:
// 每隔毫秒打印时间
setInterval(()=>{
console.log(new Date().getTime())
}, 1000)
或:
let timer = setInterval(()=>{
console.log(new Date().getTime())
},1000)
// 三秒后将计时器清除
setTimeout(()=>{
clearInterval(timer)
},3000)
在实际业务场景中,常常是需要判断timer 是否为空,再去选择设置和清除timer的,如
let timer;
setInterval(() => {
// 如果除2<5,计时器存在,继续打印,如果>5,清除计时器
if (Math.round(Math.random(10) * 10) / 2 < 5) {
if (!timer) {
timer = setInterval(() => {
console.log(new Date());
}, 1000);
}
} else {
clearInterval(timer);
timer = null;
}
}, 1000);
注意:
1.清除计时器时一定要用 clearInterval() 方法,赋值null是不会清除计时器的
2.清除时不应该先赋值null,再使用clearInterval。如果先赋值null,相当于执行了clearInterval(null),导致无法清除计时器。