问题
在使用 setInterval 的过程中,通过 clearInterval 清除定时器后回调函数依旧执行了一次才被清除。
解决方法
在回调函数中添加一个判断,在清除定时器时将该判断条件设置成通过,回调函数通过后 return 出去即可,具体代码如下:
var isClear = false
var timer = setInterval(() => {
if(isClear) return //回调函数判断到 isClear 值为true时不往下执行
console.log("setInterval执行");
},3000)
setTimeout(() => {
clearInterval(interv);
timer = null
var isClear = true //在清空定时器的同时将 isClear 设置为true
},9000)