javascript - Rxjs 等待前一个间隔请求执行完成后再继续
使用场景: 每3分钟调用一次端点,以更新应用程序中某个服务的状态。
我当前的代码:
interval(180000)
.subscribe(() => this.doRequest
.pipe(catchError(() => {
this.applicationFlag = false;
return EMPTY;
}))
.subscribe(result => this.applicationFlag = result));我目前的问题是,有时上一个间隔请求尚未完成,但下一个间隔请求也在进行请求。
有没有办法标记等待前一个请求完成,或者在前一个请求尚未完成时不执行间隔?
答案#1
当你在一个 subscribe 内部又有另一个 subscribe 时,外部链无法被通知内部链已经完成。你必须重新构建你的链,并使用诸如 concatMap、mergeMap 或 switchMap 等操作符。例如如下所示:
interval(180000)
.pipe(
concatMap(() => this.doRequest.pipe(
catchError(() => {
this.applicationFlag = false;
return EMPTY;
}),
),
)
.subscribe();
