web-dev-qa-db-ja.com

Angular2のHttpのPromisevs Observable?

基本的に、タイトルが言うように、http呼び出しを行う目的で 約束を超えて観察可能 を使用する理由はありますか?呼び出しが成功または失敗するだけであり、事実上これをキャンセルする本当の理由がないため、不必要な過度の複雑さのように思われます。これを典型的なユースケースについて尋ねますが、デバウンスの典型的な観察可能なセールスピッチではありません(皮肉なことに、ng-debounceは、無駄な呼び出しを行わずに、とにかくうまくいきます)。

8
VSO

ここで非常に関連性のあるオブザーバブルの大きな利点があります。

Observableはキャンセルをサポートしていますが、Promiseはサポートしていません。

subscribe()の代わりにmap()then()を使用しても、それほど複雑にはならないようです。必要に応じて、toPromise()を使用してPromiseを取得することもできます。

詳細については、 Angular-Promise vs Observable も参照してください。

また、FRPスタイルのプログラミングを使用する場合は、どこでも観察できるようにするのが便利です。それが望ましくない場合は、toPromise()を使用するだけで、Promiseと少し単純なAPIが提供されます。

8

Promiseとobservableの非常に基本的な違いは、サブスクライブされている機能がない場合、Observableモジュールは機能しないことです。したがって、サーバーへの負担が少なくなります。

Promiseの場合と同様に、応答を本当に利用しているかどうかに関係なく、サーバーに要求とペイロードをpingした後、promiseオブジェクトが送信されます。いつか望ましくない。

基本は、ノードまたは他のサーバーの負荷を減らすことです。

3
Jyotirmay