我有两个间隔,一个在另一个里面:
function start(start) {
if (start) {
firstInterval = setInterval(function () {
console.log("firstInterval called")
secondInterval = setInterval(function(){
clearInterval(secondInterval)
secondInterval = null
console.log("secondInterval called")
},1000)
}, 1000)
}else{
clearInterval(firstInterval)
firstInterval = null
clearInterval(secondInterval)
secondInterval = null
}
}
当我按下“停止”按钮时调用 else 块,“firstInterval”被清除但“secondInterval”继续记录“secondInterval called”
为什么会发生这种情况,我该如何预防。
firstInterval
正在创建多个secondInterval
s
每次
firstInterval
发射时,它都会创建自己的 secondInterval
。只有一个secondInterval
被清除。
要解决此问题,请将第一个更改为
setTimeout
,这样它只会触发一次。