javascript - 停止一个连续被调用的函数

标签 javascript angular api setinterval

我正在开发一个 Angular 应用程序。作为其中的一部分,我每 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 按钮时,L1 的数据每 10 秒就会不断出现。现在当我点击L2时,L2的数据来了,但L1的数据没有停止。我只想要 L1 的数据。有人可以帮我解决这个问题吗?

谢谢

最佳答案

在调用setInterval之前使用clearInterval停止前一个:

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);
}

关于javascript - 停止一个连续被调用的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58167313/

相关文章:

javascript - 仅 <a> 标签上的 DOMSubtreeModified 事件(和/或替换)?

javascript - 无弹出窗口的Google Analytics(分析)API OAuth 2.0授权

javascript - 返回 html 上的 Angular 2+ onmouseover 事件

Angular 防护在页面路由中不起作用

c# - Office 365 Api c# Windows 服务

php - AJAX 和自动刷新

javascript - 获取 Bookshelf.js 模型时使用 "new"有什么区别?

angular - ionic 3 :Type 'any' is not a constructor function type

用于调用电话和播放音频文件的 Python API

ruby-on-rails - Rails 中的 REST API 参数验证