Angular:出现错误时如何使用 catchError 完成调用

问题描述 投票:0回答:1

我有以下代码,使用 Angular 的 http 客户端:

private fetch(): Observable<number> {
  return this.http.get('myUrl')
    .pipe(catchError((err) => of(0))),
  );
}

fetchAll(): Observable<number> {
  const fakeArray = [1,2];
  return forkJoin(fakeArray.map(() => this.fetch()))
}
然后,组件通过

fetchAll

 订阅 
| async

目的是每当一个调用失败时就回退到 0。然而,这不起作用。我知道发生错误时 Angular httpclient 不会完成。有什么办法可以解决这个问题来实现我的后备吗?

angular
1个回答
0
投票

要完成对

complete
甚至
error
的调用,您可以使用
finalize
RxJS 运算符。

像这样:

private fetch(): Observable<number> {
        return this.http.get('myUrl')
            .pipe(
                catchError((err) => of(0)),
                finalize(() => {
                    //your code logic
                })
            );
        );
    }
© www.soinside.com 2019 - 2024. All rights reserved.