https://angular.io/tutorial/toh-pt6 による
一般に、オブザーバブルは時間の経過とともに複数の値を返す可能性があります。 HttpClientからのオブザーバブルは、常に単一の値を発行してから完了し、二度と発行することはありません。
確かにそうですが、リクエストが完了すると、Httpリクエスト/レスポンスはそれ以上値を生成できなくなります。では、HTTPClientがリクエストの実行中にObservableを返す主な理由は何ですか? Observableに膨大な数の演算子(再試行、デバウンスなど)を適用できるからですか?または私が行方不明になっている他の特定の理由はありますか?
あなたが見つける最良の答えは Pascal Precth の2015年12月に尋ねられた専用の問題で「Observablesはhttpにとって意味がありますか?」と説明した人です。 (しかし、自由に読んでください、たくさんの追加の答えも本当に良いです!)
頭の上:
-再試行
-キャンセル
-すべてのRxjs演算子をお楽しみください
-それらをストリームとして組み合わせる可能性
-アプリ全体で反応的に考える
-一貫性
-オブザーバブルは本質的に冷たいので、後でトリガーしたい場合は、Promisesのようにファクトリ関数にラップする必要はありません。
Observablesは、Angularフレームワークの標準の非同期ハンドラーです。
標準では、オブザーバブルは、非同期パイプ、ルーティングガード、ルーティングリゾルバー、コンポーネントイベントエミッター、およびその他の多くの場所でサポートされていることを意味します。
Angularチームは、これらの機能の多くのフォールバックとしてプロミスをサポートするために多大な努力を払ってきましたが、内部では、これらのプロミスはとにかくオブザーバブルに変換されます。
Httpリクエストを監視可能にすることで、Angularチームは、コア内の非同期操作を他のすべてと一致させています。
約束よりもオブザーバブルにはまだいくつかの利点がありますが、これは主に意見が分かれています(私自身の意見のように)。
APIの一貫性を維持するため。たとえば、Promiseを導入する必要はありません。とにかく、ObservablesはPromisesよりも柔軟性があります。さらに、observableはそのサブスクライバーを追跡できます。 HttpClientの場合、サブスクライバーが表示されたら呼び出しが行われます。 httpコールを購読しない場合、リクエストは行われません。
そのため、1つのオブザーバブルを複数回サブスクライブすると、複数のリクエストが行われます。