每X秒刷新页面上的数据以获取角度分量

时间:2018-11-27 07:45:22

标签: javascript angular single-page-application

我需要每30秒刷新一次角度分量数据。我使用简单的setInterval

 this.interval = setInterval(() => {
               this.refresh(); // api call
            }, 10000);

但是,这是不正确的,因为即使我导航到另一个“页面”(在角度SPA中,所有内容都是一页,所以实际上不是另一页),每30秒就会进行刷新。

仅在特定页面/组件上,每30秒刷新一次数据的正确方法是什么?

5 个答案:

答案 0 :(得分:3)

您可以破坏组件的OnDestroy生命周期挂钩上的间隔。

使用clearInterval(this.interval)

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

答案 1 :(得分:0)

尝试一下。

routerOnActivate() {
   this.interval = setInterval(() => {
               this.refresh(); // api call
            }, 10000);
}

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

答案 2 :(得分:0)

您可以在组件的spark.driver.extraJavaOptions生命周期挂钩中清除Interval

ngOnDestroy
  

ngOnDestroy() { clearInterval(this.interval); } 会在摘要周期中每次销毁组件时调用,并且也会清除间隔(如果这样做)。   通常用于在当前路线导航到另一条路线后调用不需要的逻辑。

答案 3 :(得分:0)

导航到另一页时,必须清除设置的间隔。

this.interval = setInterval(()=>{
  ...
});

navigateToAnotherPage = () => {
  //function to navigate to another page
  clearInterval(this.interval);
  router.navigate(...)//if you are using router to navigate
}

答案 4 :(得分:0)

试试这个。

save: boolean = false;
autoSave() {
        setInterval(() => {
            console.log('setTimeOut');
            this.save = true;

        }, 1000);
}