我有两个音程,一个在另一个里面:
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
}
}
当我按下“stop”按钮时,else块被调用,“firstInterval”被清除,但“secondInterval”继续记录“secondInterval called”
为什么会发生这种情况,以及如何预防这种情况。
1条答案
按热度按时间ie3xauqp1#
firstInterval
正在创建多个secondInterval
每次
firstInterval
触发时,它都会创建自己的secondInterval
。只有一个secondInterval
被清除。要解决这个问题,请将第一个更改为
setTimeout
,这样它只会触发一次。