为什么这个clearInterval不起作用?

时间:2016-10-17 16:04:25

标签: javascript reactjs

为什么clearInterval不起作用? 当我第一次运行它时,它输出“Here”,然后它创建第二个同时工作的计时器,依此类推。

     runTimer() {
     let _this = this
     let intervalID
     if (this.state.didTimerRun === false) {
        this.state.didTimerRun = true
        intervalID = setInterval(function() {
            if (_this.state.seconds !== 0) {
                _this.setState({
                    seconds: _this.state.seconds - 1,
                })
            } else if (_this.state.seconds === 0) {
                _this.setState({
                    seconds: 60,
                    workTime: _this.state.workTime - 1
                })
            }
        }, 1000)
    } else {
        console.log('Here')
        clearInterval(intervalID)
        _this.setState({
            workTime: 25,
            seconds: 0,
            didTimerRun: false
        })
    }

}

1 个答案:

答案 0 :(得分:0)

intervalID的范围限定为runTimer函数。

每次拨打runTimer时,都会使用其他runTimer

如果希望它在调用之间保持其值,则需要在函数外部声明变量