angular - 从 HttpInterceptor 中的 catchError 返回可观察到的已捕获错误会导致错误循环
问题描述
我有一个简单的拦截器,它处理请求并使用 RXJS catchError 捕获任何 http 错误。在 catchError 中接收到的第二个参数是被捕获的 observable。在某些情况下,我希望返回此错误并让它传播到 subscribe 函数中的错误处理程序。问题是返回捕获的错误会导致无限循环(如示例所示:https ://stackblitz.com/edit/angular-u4gakr )
拦截器中的拦截函数,当接收到 HTTP 错误时,catchError 卡在循环中,例如 404:
return next.handle(request)
.pipe(
catchError((error, caught$) => {
console.log('Returning caught observable');
return caught$;
})
);
我可能对拦截器或 RxJS catchError 有误解。有什么建议吗?
解决方案
原来我需要return throwError(error)
用作返回捕获的可观察对象,或者 of(error) 都未能正确地将其返回给订阅函数错误处理程序。
那么最后的代码是:
return next.handle(request)
.pipe(
catchError((error) => {
console.log('Returning caught observable');
return throwError(error);
})
);
推荐阅读
- css - 在 iOS 上双击网站链接的问题
- ruby - 从外部方法跳过 Ruby 迭代器
- git - 如何在目标提交后仅 git push 提交?
- android - 从 ExternalMediaDirs 在 GridView 中显示图像
- php - 如何处理从数据表发送的ajax数据
- javascript - 在 Express 中通过 URL 发送 JSON 数据
- python - 为什么值的长度与索引的长度不匹配?
- azure - 如何在发布管道中的 Azure DevOps 中输出 terraform 输出文件
- php - 如何使用 sed () 将所有 \r\n 替换为不同的行尾转义序列?
- android - 如何在 BindingAdapter 中访问视图的宽度和高度?