【发布时间】:2021-09-06 15:42:01
【问题描述】:
我需要数组中每个服务的数据在 forkjoin 调用结束时返回,所以如果一个失败,我需要它再次尝试调用。
假设在下面的示例中,requests 数组中的三个项目之一失败。
request(): Observable<T> {
const requests = [
this.getService$.getOne(),
this.getService$.getTwo(),
this.getService$.getThree()
]
return forkJoin(requests).pipe(
map(res => this.formatFunc(res))
);
}
代码应该是什么样子,这样当调用this.request() 时,即使一个服务失败并且必须再次获取数据,我仍然可以从所有三个服务中获取数据?
我做了一些挖掘,发现人们正在添加this.getService$.getOne().catch(e => of([])) ...但这似乎只返回什么,而不是再次拨打电话。
我也看到过类似的使用retry
forkJoin(requests).pipe(
retry(3),
map(res => this.formatFunc(res))
)
但是会重试所有三个调用还是只重做失败的一个?
【问题讨论】:
标签: javascript angular rxjs