在RxJS中,当其中一个调用失败时,如何独立地收集来自多个不同http调用的结果



我使用过zip和forkJoin

return forkJoin({
a: this.getA(),
b: this.getB(),
c: this.getC()
})

问题是,如果其中一个呼叫失败,所有的呼叫都会被取消,而我仍然希望从那些没有失败的呼叫中收集数据单独制作是唯一的方法吗?

要解决您的问题,您必须捕捉错误并在内部可观察中正确处理它

return forkJoin({
a: this.getA(),
b: this.getB(),
c: this.getC().pipe(catchError(error => of(error)))
})
// If getC fails, you would get A and B

我的问题是,你是必须只将这种处理添加到最后一个元素中,还是添加到所有元素中。你必须自己试试,请在评论中告诉我。

参见这里的例子5:当一个内部可观察错误时获得成功的结果

最新更新