【发布时间】:2018-10-10 16:45:53
【问题描述】:
当我使用 Rxjs 运算符的 retryWhen 方法收到 401 错误时,我正在调用 http 服务 3 次。我的问题是当我收到 401 错误作为状态时,我需要进行其他服务以更新令牌,然后重试 http 服务调用 3 次。我无法在 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);
});
【问题讨论】:
-
您是说
this引用是undefined还是this.httpPollingService是undefined? -
是的
this是undefined。 -
您可以更改它以包含此代码的位置吗?例如,这是从什么函数返回的,是否在一个类中,等等。需要查看 httpPollingService 分配给对象的位置。
-
嗨,这里的代码是怎么做的,` post(url: string, body: any, options?: RequestOptionsArgs): Observable
{ return this.http.post(url, body, this .getOptions(options)).retryWhen(this.generatorNewToken);