Angular Rxjs将超时错误从管道抛出到可观察错误部分

Angular Rxjs将超时错误从管道抛出到可观察错误部分,angular,rxjs,observable,rxjs6,redux-observable,Angular,Rxjs,Observable,Rxjs6,Redux Observable,我试图将超时错误作为错误从可观察管道抛出给观察者,但我仍然在val回调(在订阅中)中得到超时错误,而我希望在错误回调中得到超时错误: 对于实验对象,您可以轻松地测试此代码,并在stackblitz中的以下链接中对其进行编辑: of(4000300002000) .烟斗( concatMap(持续时间=> makeRequest(持续时间).pipe( 超时(2500), catchError(错误=>{ //投掷者(“未返回有效令牌”); 返回(`Request timeout out aft

我试图将超时错误作为错误从可观察管道抛出给观察者,但我仍然在val回调(在订阅中)中得到超时错误,而我希望在错误回调中得到超时错误:

对于实验对象,您可以轻松地测试此代码,并在stackblitz中的以下链接中对其进行编辑:

of(4000300002000)
.烟斗(
concatMap(持续时间=>
makeRequest(持续时间).pipe(
超时(2500),
catchError(错误=>{
//投掷者(“未返回有效令牌”);
返回(`Request timeout out after:${duration}`)
})
)
)
)
.订阅(
val=>console.log(val),
error=>console.log(“error”,error)
);

以下是我解决问题的方法:

of(4000300002000)
.烟斗(
concatMap(持续时间=>
makeRequest(持续时间).pipe(
超时(2500),
catchError(err=>throwError(`Request timeout out after:${duration}`)
)
),
)
因此,基本上您有一种方法来处理来自
timeout
(这就是为什么您在
subscribe()
)的第一个cb中得到错误)的错误,现在如果抛出另一个错误(使用
throwError
),则没有其他地方来处理传入的错误,因此您将在其回调中得到错误(从
订阅()