Angular 9-拦截器-如果catcherror中没有错误,返回什么?
我在angular应用程序中有一个拦截器 整个想法是有一个有效期为30'的jwt令牌Angular 9-拦截器-如果catcherror中没有错误,返回什么?,angular,interceptor,Angular,Interceptor,我在angular应用程序中有一个拦截器 整个想法是有一个有效期为30'的jwt令牌 偶尔我会从状态代码中得到一个错误,所以我会处理它 但是有时候,没有错误,所以我不想抛出任何异常 因为我没有返回任何东西,所以我得到了这个错误 您在需要流的地方提供了“未定义”。您可以提供一个可观察的、承诺的、数组的或可观察的。 除非我抛出像抛出者(“OK”)这样的假异常 这是我的截取函数 intercept(request: HttpRequest<any>, next: HttpHandl
- 偶尔我会从状态代码中得到一个错误,所以我会处理它
- 但是有时候,没有错误,所以我不想抛出任何异常
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>
{
return next.handle(request).pipe(catchError(err =>
{
const error = (err.error?err.error.message:null) || err.statusText;
switch (err.status) {
case 401:
{
// token expired -> goto login, dont return error
this.appService.clearUserSession();
this.router.navigate(['login']);
<<<<<<<<<<<<<<< HERE I DON'T WANT TO THROW AN ERROR, WHAT TO RETURN ?
}
break;
case 500:
{
return throwError(error);
}
break;
default:
{
if(error!="OK")
{
return throwError(error);
}
else
{
// some errors are "OK", just ignore them
<<<<<<<<<<<<<<< HERE I DON'T WANT TO THROW AN ERROR, WHAT TO RETURN ?
}
}
break;
}
}))
}
intercept(请求:HttpRequest,下一步:HttpHandler):可观察
{
返回next.handle(request).pipe(catchError(err=>
{
常量错误=(err.error?err.error.message:null)| | err.statusText;
开关(错误状态){
案例401:
{
//令牌已过期->转到登录,不返回错误
this.appService.clearUserSession();
this.router.navigate(['login']);
正如错误所说,RxJScatchError
操作符必须返回一个可观察的对象。但是当您希望不抛出错误时,可以使用RxJS函数返回一个有效的通知。它将调用可观察对象的下一个回调,而不是错误
从'rxjs'导入{of};
拦截(请求:HttpRequest,下一步:HttpHandler):可观察的>{
返回next.handle(request).pipe(catchError(err=>{
常量错误=(err.error?err.error.message:null)| | err.statusText;
开关(错误状态){
案例401:{
//令牌已过期->转到登录,不返回错误
this.appService.clearUserSession();
this.router.navigate(['login']);
返回(错误)//