如何在 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);
}
我想从数据库中获取实时数据到垫子网格中。我想每 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);
}