1
返されたObservableに変更を加えずに、返されたヘッダーを保存するAngular 2のHttpサービス用のラッパーサービスを作成しようとしています。基本的に、Angular 2 Httpメソッド(http.get()
)を呼び出し、Observableを返しますが、Observableに含まれるResponseオブジェクトは保存します。私の知る限り、返されるObservable(Responseオブジェクト)に含まれるオブジェクトは1つだけです。コードは、活字体で次のようになります。RXJSを使用して観察可能な単一の値を突然変異なしで抽出する
private headers: Headers;
constructor(private http: Http) { }
public get(url: string): Observable<Response> {
return this.http.get(url, this.headers); // save the Response's headers before returned
}
私はRXJSに新しいですが、私はまだ、観察を戻しながらレスポンスを抽出する方法を探しています。アドバイスは役に立ちますが、私は効率的でRXJSの良い習慣を使用するメソッドを好むでしょう。ありがとう。
'シェア()'の目的は何ですか? –
'http.get'はコールドオブザーバブルを返します(単純にputは' item'を積極的に発信していない 'observable'です。誰も' subscribe'していない場合、 'url'へのリクエストは発生しません)。しかし、あなたのサービスの 'get'関数と実際の' component'の中にサブスクライブしているもののように、1つのコールドオブザーバブルに複数の 'subscribe'があると、それに応じて複数のリクエストが発生します。それを避けるために 'share()'が採用されています。もっと読むここをクリック:http://blog.thoughtram.io/angular/2016/06/16/cold-vs-hot-observables.html –