Как вернуть цепочку из множества then / catch из массива - PullRequest
1 голос
/ 07 марта 2019

У меня есть HttpService, и я хочу сделать refreshTokenInterceptor, но на самом деле у меня проблема с добавлением цепочки then / catch из метода handle, который реализован моими перехватчиками.

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 } )
    }
}

У вас есть идея, как создать цепочку из блоков then / catch из методов handle?

На самом деле я хочу иметь что-то вроде углового перехватчика с механизмом обновления токенов, потому что я не сделалне нашел лучшего способа автоматического обновления токена при статусе 401.Может быть, у вас есть лучшее решение, как перехватить эти запросы в вашем абстрактном слое, как я сделал HttpService.

...