2016-08-21 5 views
4

私は角2サービスを持っているとします。 createToken機能は、サーバからトークンにログイン取得します。RxJS Observableを2回購読してください。応答の価値を2回取得する

//ANGULAR 2 SERVICE: 
//login to application 
createToken(email: string, password: string) { 
    let headers = new Headers({ 
     'Content-Type': 'application/x-www-form-urlencoded' 
    }); 

    let data = 'username=' + email + '&password=' + password + '&grant_type=password'; 

    this.http.post(this.loginURL, data, { headers: headers }) 
     .map(response => response.json()) 
     .subscribe(
     response => { 
      localStorage.setItem(this.storageTokenKey, response.access_token); 
      console.log("Token: " + response.access_token); 
     }, 
     error => { 
      console.log(error.text()); 
     }); 
} 
私はトークンを使用して2つのことを行う必要がある

  1. をそれ保存するたびに行われますローカルストレージ(に、それはにする必要がありますサービス)
  2. は、私の)私の知る限り観測を理解し(これを行うために)

(コンポーネントで、その上にいくつかの操作を行い、それを表示したり、何でも関数は、それを使用して.subscribeメソッドを呼び出して結果に対して何らかの操作を実行できるようにするために、Observable<>を返さなければなりません。残念ながら

as I see from RxJS documentation.subscribe方法は、私が二回.subscribe()メソッドを呼び出すことができるように、次に何をすべきObservable<>

を返さないのですか?

答えて

11

あなたはdo() operatorを使用することができます。

は、観察可能なソース上のすべての放出に副作用を実行しますが、元と同じであることを観測を返します。

return this.http.post(this.loginURL, data, { headers: headers }) 
    .map(response => response.json()) 
    .do(response => { 
     localStorage.setItem(this.storageTokenKey, response.access_token); 
     console.log("Token: " + response.access_token); 
    }); 
+0

これはお金です。ありがとう! – Aarmora

関連する問題