为什么clearInterval(timer) 后,在这个定时器里clearInterval(timer)后的代码还会运行,还是会运行满足停止定时器的条件里面的内容,不开启下一个定时器
如果clearInterval(timer)放在定时器外面,这个定时器会直接停止,不会等到这个定时器内容运行完,不开启下一个定时器
这样看
var timer = setInterval(function() {
console.log(111)
setTimeout(() => {
console.log(222)
}, 3000)
}, 5000)
setTimeout(() => {
clearInterval(timer)
}, 6000)
从这里看应该是这么说clearInterval可以停掉未开始或者已开始但还未进入函数逻辑的时间函数,但是不能终止已经进入的单次时间函数内的逻辑,它只要进去了即使外面已经终止也一定会走完。我上面的例子也是想表现这一点,clearInterval我也是写在外面的,但6秒后停止时间函数后,函数内已经执行的内容依旧会走完,结合你题目中的场景来说,其实写在setInterval的逻辑内部还是写在外面都是一样,核心不变的是只要函数内逻辑开始执行了,就一定会走完