React JS - 为什么这个变量表现得像一个函数?

时间:2018-01-30 01:02:44

标签: javascript reactjs

我创建了一个倒数计时器,但我无法通过clearInterval()清除间隔。我最终将setInterval函数放在变量中,然后将该变量作为clearInterval()中的参数传递。我不明白为什么首先调用setInterval函数,因为我正在做的就是创建一个变量。变量内的函数是否自动运行?你不必以某种方式调用它们(如果它在变量中,你甚至如何调用它?)。这是有效的代码,但我不明白为什么:

myFunct () {
  const intervals = setInterval(() => {
    if(this.state.time > 0) {
      this.setState({ time: this.state.time-1 })
    }
    else {
      clearInterval(intervals);
    }
  }, 1000);
}

1 个答案:

答案 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