2016-12-28 109 views
1

我想用觀察者的重試屬性來嘗試一下放棄並拋出一個錯誤之前的3倍。但是,當我運行下面的代碼時,我得到'重試不是一個函數'。任何想法是怎麼回事?RXJS觀察者不重試功能

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

可能的複製。 map不是\ [null \]]中的函數(http://stackoverflow.com/questions/34515173/angular-2-http-get-with-typescript-error-http-get-map-is-not-a - 功能型) – olsn

回答

1

確保導入的retry - 運算符與[角2 HTTP GET與打字稿錯誤http.get(...)import "rxjs/add/operator/retry";