我有HttpService,我想做些refreshTokenInterceptor,但实际上我在从拦截器实现的handle方法中添加then / catch链时遇到了问题。
class HttpService {
constructor(private interceptors: Interceptor[]) {
}
get() {
this.makeRequest()
}
post() {
this.makeRequest();
}
//other http methods;
makeRequest(patch, body) {
const request = { ...someData }
return this.interceptors.map(interceptor => intercepor.handle(request))
.then(modifiedReq => fetch(patch, modifiedBody))
.then(res => res.json())
}
}
ExampleInterceptor() {
handle (req) {
Promise.resolve(req)
.then(req.headers.authentication = 'Auth Token')
.catch(req => { refreshToken and retry request } )
}
}
您是否知道如何使用handle方法中的then / catch块进行链接?
实际上,我希望具有带刷新令牌机制的角度拦截器之类的东西,因为我没有找到更好的方法来在401状态下自动刷新令牌。也许您有更好的解决方案,如何像我提出的HttpService一样在抽象层中拦截这些请求。