RXJS观察者重试不是一个函数

时间:2016-12-28 13:02:25

标签: rxjs5

我想使用观察者的重试属性尝试3次,然后放弃并抛出错误。但是,当我运行以下代码时,我得到'重试不是一个函数'。有什么想法发生了什么?

get(url: string, options?: RequestOptionsArgs): Observable<Response> {
    this._log.debug('SecureHttpService#get: ' + url);

    let resultObservable = Observable.create((observer) => {
      this._log.debug('resultObservable');
      this.tryReActivateToken().then(
        (result) => {
          this._log.debug('resultObservable#then#result: ' + result);
          if (result === true) {
            let headers = new Headers();
            headers.append('Authorization', 'Bearer ' + this.access_token);
            headers.append('X-Requested-With', 'XMLHttpRequest');
            // headers.append('Accept', 'json');

            this._log.debug(this.access_token);
            let superGetObs = super.get(url, { headers: headers, withCredentials: true }).retry(3);

            superGetObs.subscribe(
              (next) => { observer.onNext(next); },
              (error) => { observer.onError(error); },
              () => { observer.onCompleted(); }
            );
          } else {
            observer.onError(new Error('Could not log you in automatically'));
          }
        }, (error) => { this._log.debug('resultObservable#then#error: ' + error); observer.onError(error); });
    });

    return resultObservable;
  }

完整错误堆栈:http://pastebin.com/ScrzsNh0

1 个答案:

答案 0 :(得分:8)

确保使用retry

导入import "rxjs/add/operator/retry"; - 运算符