首页 > 解决方案 > 如何在 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);
    });

标签: angularrxjs5

解决方案


您需要像这样在 handlerError 方法中抛出错误

handleError(error: HttpErrorResponse) {
    // return an observable with a user-facing error message
    return throwError("Error message...");
  }

推荐阅读