Я хотел бы использовать свойство retry наблюдателя, чтобы попытаться 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

4
mp3por 28 Дек 2016 в 16:02

1 ответ

Лучший ответ

Убедитесь, что вы импортируете оператор retry - с import "rxjs/add/operator/retry";

8
olsn 29 Дек 2016 в 16:26