21
RxJ 5でAngular Httpネットワークコールの結果を共有する正しい方法は何ですか?
Httpを使用して、ネットワークコールを実行し、httpオブザーバブルを返すメソッドを呼び出します。 getCustomer() { return this.http.get('/someUrl').map(res => res.json()); } このオブザーバブルを取得して複数のサブスクライバーを追加すると、次のようになります。 let network$ = getCustomer(); let subscriber1 = network$.subscribe(...); let subscriber2 = network$.subscribe(...); 私たちがしたいことは、これが複数のネットワーク要求を引き起こさないことを確認することです。 これは珍しいシナリオのように見えるかもしれませんが、実際には非常に一般的です。たとえば、呼び出し元がオブザーバブルをサブスクライブしてエラーメッセージを表示し、非同期パイプを使用してそれをテンプレートに渡す場合、すでに2つのサブスクライバーがあります。 RxJs 5でそれを行う正しい方法は何ですか? つまり、これは正常に動作するようです: getCustomer() { return this.http.get('/someUrl').map(res => res.json()).share(); } しかし、これはRxJ 5でこれを行う慣用的な方法ですか、それとも代わりに何か他のことをする必要がありますか? 注:Angular 5 newに従って、JSON結果がデフォルトで想定されるようになったため、すべての例HttpClientの.map(res => res.json())部分は役に立たなくなりました。