gpt4 book ai didi

angular - 如何在 rxjs retryWhen 方法中使用 Angular 服务

转载 作者:行者123 更新时间:2023-12-05 07:34:28 25 4
gpt4 key购买 nike

当我使用 Rxjs 运算符的 retryWhen 方法收到 401 错误时,我正在调用 http 服务 3 次。我的问题是,当我收到 401 错误作为状态时,我需要进行其他服务来更新 token ,然后重试 3 次 http 服务调用。我无法在 retryWhen 回调方法中使用服务,因为它始终将其显示为 undefined 。你能为我提供解决方案吗?

 return this.http.get(url, this.getOptions(options)).retryWhen(errors => {
return errors.mergeMap((error) => {
console.error('error status....', this, error, error.status);
if (error.status === 401) {
// i need to make other service call here
this.httpPollingService.updateToken(); // unable to call this call.
return Observable.of(error);
} else {
return Observable.throw(error);
}
}).delay(5000).take(2);
});

最佳答案

我使用以下方式在 401 错误状态时刷新 token ,并使用更新的 token 再次调用相同的请求方法。

 return this.http.post(url, body, headers).catch(initialError => {
if (initialError.status === 401) {
return this.newTokenGenerator().flatMap(newToken => {
if (newToken) {
headers.set('beare ', newToken);
return this.http.post(url, body, headers).take(2);
}
});
} else {
return Observable.throw(initialError);
}
});

关于angular - 如何在 rxjs retryWhen 方法中使用 Angular 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50103048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com