如何在 angular 12 中每 3 秒调用一次 http 服务?

How to call a http service after every 3 seconds in angular 12?

我想从数据库中获取实时数据到垫子网格中。我想每 3 秒使用实时数据刷新网格,而无需手动刷新页面。

我正在尝试使用订阅,但出现错误,提示未提供初始化。

我的TS -

  getDataForClients(name:string){
    this.dashboardService.getClientsData(name).subscribe(res=>{
      this.dataSource = new MatTableDataSource(res);
  })

setInterval 和计时器也给出错误输出。

我用过这是我的服务-

    public getClientsData(name:string){
  return timer(0, 5000)
  .pipe(
     switchMap(_ => this.http.get<any[]>('https://localhost:44395/api/StocksOrders/' + name)),
     catchError(error => of(`Bad request: ${error}`))
  );
}

但是它给出的是迄今为止传递的所有变量的输出,而不是传递的那个变量的输出。 它应该只是 return 具有 8 个值的数组,但它也是 return 其他数组。

}

如何每 3 秒调用一次此方法?

你应该使用 RxJS

中的 interval 而不是 setInterval
import { interval } from 'rxjs';

mySub: Subscription = null;
initializeIntervalDataForClients(name:string){
  if(this.mySub !== null){
    this.mySub.unsubscribe();
  }

  this.mySub = interval(3000).pipe(
    switchMap(i => this.dashboardService.getClientsData(name))
  ).subscribe(
    res => { 
      // do your stuff here 
    }
  );
}

试试这个,对我有用

  ngAfterViewInit() {
    setInterval(() => {
      this.getDataForClients("simpleName");
    }, 3000);
  }