2016-12-26 19 views
0

我想創建一個可觀察的,但我的代碼失敗:angular2 Observarble onError的不是一個函數

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 }); 

      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/BBcdc9sy

我在做什麼錯?

+0

可能的複製[Rxjs下一主題或onNext](http://stackoverflow.com/questions/38555727/rxjs-subject-next-or-onnext) – olsn

回答

3

在RxJs 5 observer的方法被重新命名。您應該使用error而不是onError

+0

是此同爲onNext和的onComplete? – mp3por

+0

謝謝......我讀過的鏈接是一樣的:) – mp3por

+0

你有什麼想法爲什麼改變'let superGetObs = super.get(url,{headers:headers,withCredentials:true});'to'let superGetObs = super.get(url,{headers:headers,withCredentials:true}).retry(3);'產生這個錯誤:http://pastebin.com/ScrzsNh0 – mp3por

1

我想你寫錯了語法'onError'。真正的一個是'錯誤'。你可以試試這個,我希望它能解決你的問題;

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 }); 

      superGetObs.subscribe(
       (next) => { observer.onNext(next); }, 
       (error) => { observer.error(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; 
    } 
相關問題