catchError
能捕获异常,且需要返回一个Observable
,代码里的throw
、throwError
及其他JS错误均能被该操作符捕获。
需要注意的是,catchError
捕获到异常后,数据源将不再执行。
代码示例
- 不添加
catchError
from([1,2,3,4,5,6]).pipe(
tap(v => {
if (v == 3) throw 'err'
})
).subscribe()
// console
1 2 error
- 添加
catchError
给from
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
- 添加
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