2016-12-26 3 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 были переименованы. Вы должны использовать error вместо onError.

+0

это то же самое для onNext и OnComplete? – mp3por

+0

Спасибо ... Я прочитал ссылку, это то же самое :) – mp3por

+0

У вас есть идея, почему смена 'let superGetObs = super.get (url, {headers: headers, withCredentials: true});' 'позволить 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; 
    } 
Смежные вопросы