首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular 2 setinterval()继续在其他组件上运行

Angular 2 setinterval()继续在其他组件上运行
EN

Stack Overflow用户
提问于 2016-05-09 21:06:43
回答 3查看 115K关注 0票数 55

我在一个组件中有以下方法:

代码语言:javascript
复制
ngOnInit()
        {
            this.battleInit();
            setInterval(() => {
                this.battleInit(); 
                }, 5000);
        }

现在,只有当用户在此特定组件中时,我才需要运行此间隔,这意味着当用户离开此组件时,间隔将停止。

目前,this.battleInit()每5秒执行一次,即使在用户离开此页面之后也是如此。

简短问题:当用户导航离开(通过路由)到另一个组件时,如何停止setInterval()

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-09 21:07:53

为此,您需要在组件的ngOnDestroy钩子方法中使用clearInterval方法。为此,您需要通过setInterval方法保存返回值。

下面是一个示例:

代码语言:javascript
复制
ngOnInit() {
  this.battleInit();
  this.id = setInterval(() => {
    this.battleInit(); 
  }, 5000);
}

ngOnDestroy() {
  if (this.id) {
    clearInterval(this.id);
  }
}
票数 157
EN

Stack Overflow用户

发布于 2019-10-31 06:13:36

每隔40秒

代码语言:javascript
复制
 polling: any;

  ngOnInit() {

    this.consulta();
    this.pollData();
  }

 pollData () {
    this.polling = setInterval(() => {
    this.consulta();

  },40*1000)

 ngOnDestroy() {
    clearInterval(this.polling);
  }
票数 4
EN

Stack Overflow用户

发布于 2019-10-14 15:43:49

代码语言:javascript
复制
ngOnInit() {
  this.battleInit();
  this.id = setInterval(() => {
    this.battleInit(); 
  }, 5000);
}

ngOnDestroy() {
  if (this.id) {
    clearInterval(this.id);
  }
}

this.idsetInterval返回的标识符,可用于通过clearInterval取消操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37116619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档