无法从订阅Angular RxJ

时间:2018-01-24 17:08:10

标签: angular rxjs

我按照最新的教程,使用pipetapcatchError拦截结果。

我有:

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)

我知道它与pipecatchError有关,如果删除pipe,一切都会正常运行。我怎样才能继续错误并让它在subscribe中看到?

1 个答案:

答案 0 :(得分:2)

您的catchError会捕获错误,此时它将不再继续运行。如果您希望它继续进行较低的错误处理,则需要返回Observable错误。