微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用setInterval以角度调用我的服务

如何解决如何使用setInterval以角度调用我的服务

我有一个服务,该服务会在页面加载时返回一些数据,

getAllturbinesstat(){
  return this.http.get(this.url_stat_turbines_all);
}

我在组件中使用此服务:

this.service.getAllturbinesstat().subscribe( s => {
   this.allStats.push(s);
});

allStat是一个数组,现在每3分钟应运行此函数以更新数据,setInterval是在使用中还是在我的组件中?我该怎么写呢?因为第一次我不需要setinterval,因为第一次加载页面后,我的数据就会更新。

解决方法

您可以尝试一下。

首先像这样在您的组件中创建一个函数。

getAllTurbinesStat() {
  this.service.getAllTurbinesStat().subscribe(s => {
    this.allStats.push(s);
  });
}

然后在组件的ngOnInit()constructor中使用它。

this.getAllTurbinesStat();
setInterval(() => this.getAllTurbinesStat(),180000);
,

您可以像下面这样使用间隔:

为您服务

 getAllTurbinesStat(){
  return this.http.get(this.url_stat_Turbines_all);
 }

 getData(): {
   return interval(3000).pipe(
      switchMap( () => this.getAllTurbinesStat())
   )

 }

在您的组件中

this.service.getData().subscribe( s => {
   this.allStats.push(s);
});
,

您可以使用rxjs中的计时器。

import { timer } from 'rxjs';
​
/*
  timer takes a second argument,how often to emit subsequent values
  in this case we will emit first value after 0 second and subsequent
  values every 3 minutes after
*/
const source = timer(0,180000);
//output: 0,1,2,3,4,5......
const subscribe = source.subscribe(val => console.log(val));

根据您的情况。

  return timer(0,180000).pipe(
      flatMap( () => this.getAllTurbinesStat())
   )
,

首先在组件的ngOnInit中调用一次函数,然后继续使用setInterval

ngOnInit() {
   getAllTurbinesStat();
   setInterval(getAllTurbinesStat(),3000);
}

getAllTurbinesStat() {
  return this.http.get(this.url_stat_Turbines_all);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。