我在Angular中有一个http POST调用,大约需要15-20秒才能完成。 在我的后端中,我为前端的帖子调用的进度条提供了一个计算值。
现在,我想在启动POST调用后直到发完呼叫后每250ms发出一次http GET调用。
我看了一下Rxjs的操作者,但无法解决如何正确组合/传递它们的方法(例如计时器或间隔)
这是我当前的代码:
// this is the Observable which does the post call when subscribing
const x = this.apiService.importBackUp(this.backupList);
x.subscribe(); // here I want to subscribe to my GET call every 250ms until completion
apiService.ts:
importBackUp(backup: BackupList[]): Observable<any> {
return this.httpClient.post(this.API_URL + '/Settings/import', backup)
.pipe(
catchError(this.handleError('Import Backup', null))
);
}
getProgress(): Observable<number> {
return this.httpClient.get<number>(this.API_URL + '/Settings/progress')
.pipe(
catchError(this.handleError('Get Import Progress', null))
);
}
答案 0 :(得分:1)
尝试
interval(250).pipe(
mergeMap(()=>this.apiService.getProgress()),
tap(progress=>do you process update ....),
takeUntil(this.apiService.importBackUp(this.backupList))
).subscribe()
或
this.apiService.importBackUp(this.backupList).pipe(
withLatestFrom(
interval(250).pipe(
switchMap(()=>this.apiService.getProgress()),
tap(progress=>do you process update ....),
)
)
.subscribe()