1. catchError

优雅地处理 observable 序列中的错误(在 catch 函数中返回一个 observable !)

2. retryWhen

当发生错误时,基于自定义的标准来重试 observable 序列

3. retry

如果发生错误,以指定次数重试 observable 序列。

4. finalize(等于finally, 结合pit文档中catchError看)

可在 Observable 链的不同位置添加多个 finalize 调用,以确保正确释放多个资源

  1. // 最后一个 finalize 块是在 subscribe value 处理函数和 completion 处理函数之后执行的
  2. const http$ = this.http.get<Course[]>('/api/courses');
  3. http$
  4. .pipe(
  5. map(res => res['payload']),
  6. catchError(err => {
  7. console.log('caught mapping error and rethrowing', err);
  8. return throwError(err);
  9. }),
  10. finalize(() => console.log("first finalize() block executed")),
  11. catchError(err => {
  12. console.log('caught rethrown error, providing fallback value');
  13. return of([]);
  14. }),
  15. finalize(() => console.log("second finalize() block executed"))
  16. )
  17. .subscribe(
  18. res => console.log('HTTP response', res),
  19. err => console.log('HTTP Error', err),
  20. () => console.log('HTTP request completed.')
  21. );