我按照最新的教程,使用pipe
,tap
和catchError
拦截结果。
我有:
getStatus(): Observable<boolean> {
return this.http.get<boolean>('/status').pipe(
tap((returnedStatus: boolean) => console.log(returnedStatus)),
catchError(console.log('getStatus error'))
);
}
发生错误时,catchError
有效,console.log('getStatus error')
会被执行,并会打印一条消息。
但是,当我subscribe
,并在subscribe
中放置另一个错误处理函数时,即使发生错误,该函数也不会执行。
getStatus().subscribe(
st=> {
console.log('data received: '+ st);
},
st => {
console.log('yeah, error appear');
}
)
每当收到数据时,即使发生错误,也会执行console.log('data received: ' + st)
。
我知道它与pipe
和catchError
有关,如果删除pipe
,一切都会正常运行。我怎样才能继续错误并让它在subscribe
中看到?
答案 0 :(得分:2)
您的catchError会捕获错误,此时它将不再继续运行。如果您希望它继续进行较低的错误处理,则需要返回Observable错误。