RxJS6实战经验 catchError捕获异常

catchError能捕获异常,且需要返回一个Observable,代码里的throwthrowError及其他JS错误均能被该操作符捕获。
需要注意的是,catchError捕获到异常后,数据源将不再执行。

代码示例

  1. 不添加catchError
from([1,2,3,4,5,6]).pipe(
  tap(v => {
    if (v == 3) throw 'err'
  })
).subscribe()

// console
1 2 error
  1. 添加catchErrorfrom
from([1,2,3,4,5,6]).pipe(
  tap(v => {
    if (v == 3) throw 'err'
  }),
  catchError(err => of(err))
).subscribe()

// console
1 2 'err' complete
  1. 添加catchError给高阶函数
from([1,2,3,4,5,6]).pipe(
  mergeMap(v => {
    return of(v).pipe(
        tap(v => {
            if (v == 3) throw 'err'
        }),
        catchError(err => of(err))
    )
  })
).subscribe()

// console
1 2 'err' 4 5 6 complete

可运行的代码示例

你可能感兴趣的:(RxJS6实战经验 catchError捕获异常)