【发布时间】:2017-11-22 22:27:24
【问题描述】:
我正在尝试在 Angular4 中实现请求/响应拦截机制。我对可观察对象相当陌生。
我维护了两个拦截器数组,一个用于请求,另一个用于响应。拦截器只不过是接受请求/响应对象并对其进行转换的函数。
sendRequest(req:Response):Observable<Response>{
req= this.processRequest(req);
This.http.request(req)
.map( (res:Response)=>{
return this.processResponse(res)
})
.catch(this.handleError)
}
handleError(err:Response):Observable<Response>{
return Observable.throw(err);
}
基本错误处理工作正常。有时对于 401 异常,我想获取新的 Auth 令牌并使用更新的 Auth 令牌重试相同的请求。
我在想的是引入错误拦截器数组。其中一个错误拦截器函数将检查它是否为 401,并向服务器发出新的刷新请求,使后续的错误拦截器函数无效。我认为需要切换可观察流。观察者最终会得到最新请求的响应。如何进行此操作?
【问题讨论】:
-
@Pace 我的疑问是关于从拦截器函数中切换流。如果我与 http.request 处于同一级别,则 Switchmap 可以工作。
-
看看这个问题的答案:stackoverflow.com/questions/39928183/…
标签: angular typescript rxjs