如何在 Angular 4 中使用 clearInterval()

How to use clearInterval() in Angular 4

我正在尝试在我的 Angular 4 应用程序中使用 setInterval。

const inter = setInterval(() => {
  // logic resulting in exitCondition
  if(exitCondition) {
    clearInterval(inter);
  }
}, 1000);

此设置在原版 javascript 中运行良好,但 clearInterval() 在 Angular 中似乎不起作用。在做一些研究后,我发现 Angular 1.x 的间隔服务:

https://docs.angularjs.org/api/ng/service/$间隔

Angular 4 有类似的东西吗?或者是否有使 clearInterval() 工作的解决方法?

可以这样设置,

  this.interval = setInterval(() => {

  }, 1000);

像这样清除,

if (this.interval) {
   clearInterval(this.interval);
}

如果你想在某些条件下使用相同的方法

var a = 1;
    this.interval = setInterval(() => {
      console.log(a++)
      if(a > 30){
        clearInterval(this.interval);
      }
    }, 1000);

如果setInterval函数是在用户按下按键后才启动的,那就有问题了。如果用户多次按下该键,则会发生以下情况:

  • setInterval1 -> 开始
  • setInterval2 -> 开始

当按下停止按钮时:

  • setInterval2 -> 停止

因此,setInterval1 进程永远不会停止。为此,我们需要声明一个布尔值变量。按下键时它会得到值“true”,并在函数开头用“if”检查它。