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

可运行的代码示例

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。