为什么我的clearInterval没有清除interval?- JavaScript

c3frrgcw  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(559)

我有两个音程,一个在另一个里面:

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”
为什么会发生这种情况,以及如何预防这种情况。

ie3xauqp

ie3xauqp1#

firstInterval正在创建多个secondInterval
每次firstInterval触发时,它都会创建自己的secondInterval。只有一个secondInterval被清除。
要解决这个问题,请将第一个更改为setTimeout,这样它只会触发一次。

相关问题