Я уже реализовал логику сохранения и извлечения токенов, а также обновляю вызов. Проблема в том, что когда я перехватываю 403 в своем HttpInterceptor, другие вызовы, которые выполняются в то же время, также обновляют токен. Я хотел бы удерживать эти звонки, пока мой токен не будет обновлен. Чтобы создать то, что я бы назвал «семафором» запросов.
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
private auth: AuthService;
constructor(private injector: Injector) {
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.auth = this.injector.get(AuthService);
if(this.auth.isAuthenticated()){
request = request.clone({
setHeaders: {
Accept: 'application/json',
Authorization: `Bearer ${localStorage.getItem('access_token')}`
}
});
} else {
request = request.clone({
setHeaders: {
Accept: 'application/json'
}
});
}
return next.handle(request).catch(error => {
if (error.status === 401) {
console.log('refreshing token');
// TODO: return Refresh Token here and hold other calls
}
return Observable.throw(error);
});
}
HttpInterceptor
? - person Dmitry   schedule 02.01.2018