我使用过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:当一个内部可观察错误时获得成功的结果