Я создал функцию повтора, которая может вызываться при сбое запроса, чтобы он мог повторить его.Идея состоит в том, что запрос завершится неудачно, когда срок действия токена пользователя истек, поэтому, если срок его действия истек, он должен обновить токен и повторить попытку с новым, но он все еще повторяет попытку со старым токеном.Понятия не имею, что нужно сделать, чтобы при повторной попытке учитывалось новое значение.
Это функция повторения:
http_retry(maxRetry: number = 5, delayMs: number = 2000) {
return (src: Observable<any>) => src.pipe(
retryWhen(_ => {
return interval(delayMs).pipe(
flatMap(count => count == maxRetry ? throwError("Giving up") : of(this.authService.refreshToken()))
)
})
)
}
Таким образом, это обновит значение токена (Это фактическидает и сохраняет новое значение, но не использует его в повторных запросах)
Это функция, которая выполняет запрос:
myRequest(){
return this.http.get<any[]>(
`${this.url}?auth=${this.authService.getUserValue().token}`
);
}
А вот как я вызываю запрос сповтор:
this.myRequest()
.pipe(this.http_retry())
.subscribe(resData => {
// Logic code
}
);