angular - 如何在 rxjs retryWhen 方法中使用角度服务
问题描述
当我使用 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);
});
解决方案
您需要像这样在 handlerError 方法中抛出错误
handleError(error: HttpErrorResponse) {
// return an observable with a user-facing error message
return throwError("Error message...");
}
推荐阅读
- uml - UML类图设计
- mysql - 当它们没有相同的键时组合来自 2 个表的数据?
- mysql - MySQL 5.7.24 的负载转储后,无法将双精度值正确存储到 MySQL 5.7.25
- postgresql - 跨多个表排除约束?
- python-3.x - 在 Python 3 中导入 H2O 失败
- intellij-idea - Intellij 2018.3 默认自动完成禁用
- android - 无法获取提供者 androidx.lifecycle.ProcessLifecycleOwnerInitializr
- mysql - 节点 API 超时,直到我再次重新启动 pm2
- java - 模型映射器映射错误
- regex - Perl - 正则表达式中的“]”问题