forkJoin 是否有任何替代的 rxjs 运算符来处理个别错误?

Is there any alternative rxjs operator for forkJoin to handle individual errors?

我正在我的 Angular 项目中开发 RxJS 版本 7。我知道 forkJoin 运算符将等待所有可观察对象完成,然后它会发出值。如果其中任何一个失败,那么我们也会得到其他值的 none。但是如果我想要其他值,即使其中一个失败,那么我需要将错误处理程序附加到每个可观察对象(或 api 调用),如下所示:

forkJoin(
      {
        countries: this.http.get('https://restcountries.com/v2/all').pipe(catchError(error => of(error))),
        products: this.http.get('https://fakestoreapi.com/ppp').pipe(catchError(error => of(error))),
        users: this.http.get('https://mocki.io/v1/d4867d8b-b5d5-4a48-a4ab-79131b5809b8').pipe(catchError(error => of(error)))
      }
    ).subscribe((res)=>{
      console.log(res);
    });

因此,在这种情况下,即使其中一个失败,至少我从其他两个 api 调用中获得了值。那完全没问题。我很高兴。 但是,例如,我有 50 api 个电话。将错误处理程序附加到每个 api 调用太乏味了。是否有任何替代 RxJS 运算符来实现上述行为。如果我能以更好的方式实现相同的行为,请告诉我。提前致谢。

只需创建 api 包装器并使用它

public getApi(url: string): Observable<any>{
    return this.http.get(url).pipe(catchError(error => of(error)))
}

forkJoin(
      {
        countries: this.getApi('https://restcountries.com/v2/all'),
        products: this.getApi('https://fakestoreapi.com/ppp'),
        users: this.getApi('https://mocki.io/v1/d4867d8b-b5d5-4a48-a4ab-79131b5809b8')
      }
    ).subscribe((res)=>{
      console.log(res);
    });