停止在角度连续调用函数

时间:2019-09-30 11:48:08

标签: javascript angular api setinterval

我正在开发一个有角度的应用程序。作为它的一部分,我每10秒调用一次函数,该函数会进行一次API调用。

我的功能看起来像

  getData(ahu) {
    console.log('In get data function')
    console.log(ahu)
    setInterval(() => {
      this.getDataRealTime(ahu);
    }, 10000);
  }
<button mat-flat-button (click)="getData(L1)">L1</button>
<button mat-flat-button (click)="getData(L2)">L2</button>

因此,当我单击L1按钮时,数据每10秒就会持续发送L1。现在,当我单击L2时,L2的数据到来,但是来自L1的数据没有停止。我只需要L1的数据。有人可以帮我吗?

谢谢

2 个答案:

答案 0 :(得分:6)

在致电clearInterval之前,使用setInterval停止上一个:

var intervalId;

function getData(ahu) {
    console.log('In get data function')
    console.log(ahu)
    clearInterval(intervalId); // use either global or this.intervalId
    intervalId = setInterval(() => { // same here.
      this.getDataRealTime(ahu);
    }, 10000);
}

答案 1 :(得分:0)

当您看到这种情况时,就意味着您正在更改模型,以使Angular必须重新运行摘要并再次启动手表。在您的特定情况下,您正在调用一个更新计数器的函数,该函数显示在页面上。当计数器值更改时,它将再次运行摘要,该摘要将调用更新计数器的函数,等等。