我创建了一个倒数计时器,但我无法通过clearInterval()
清除间隔。我最终将setInterval
函数放在变量中,然后将该变量作为clearInterval()
中的参数传递。我不明白为什么首先调用setInterval
函数,因为我正在做的就是创建一个变量。变量内的函数是否自动运行?你不必以某种方式调用它们(如果它在变量中,你甚至如何调用它?)。这是有效的代码,但我不明白为什么:
myFunct () {
const intervals = setInterval(() => {
if(this.state.time > 0) {
this.setState({ time: this.state.time-1 })
}
else {
clearInterval(intervals);
}
}, 1000);
}
答案 0 :(得分:1)
以下是setInterval
的签名:
window.setInterval(callbackFn, delay, param1, param2, ..)
此函数返回一个数字,表示所设置的计时器的ID值。此号码可以传递给window.clearInterval
以清除计时器。所以当你这样称呼它时:
const myInterval = setInterval(myCallback, 1000);
myInterval
现在是正在运行的计时器的数字ID。如果myCallback
调用clearInterval(myInterval)
,则会清除计时器。
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval