如何从数组中返回多个then / catch的链

时间:2019-03-07 10:31:12

标签: javascript promise interceptor

我有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一样在抽象层中拦截这些请求。

0 个答案:

没有答案