web-dev-qa-db-ja.com

なぜAngularでmap()よりもsubscribe()を使用する必要がありますか?

Angular2のObservableを活用しようとしていますが、map()subscribe()よりも使用する必要がある理由について混乱しています。このようなwebApiから値を取得しているとします

  this.http.get('http://172.17.40.41:8089/api/Master/GetAllCountry')

subscribe(success, error, complete)を使用して、成功コールバックですべての値を取得し、完了コールバックで値を返すことができます。これらすべての機能を実行できる場合、map()の必要性は何ですか?利点はありますか?

要するに、なぜこのように書くべきなのか

this.http.get('http://172.17.40.41:8089/api/Master/GetAllCountry')
    .map(r=>{})
    .subscribe(value => {
    }, error => error, () => {
});

マップ関数なしで単純にこれを書くことができる場合:

this.http.get('http://172.17.40.41:8089/api/Master/GetAllCountry')
    .subscribe(value => {        
    }, error => error, () => {           
});
46
Lijin Durairaj

Observableを返す場合、他のコードがサブスクライブできますが、現在のメソッドでデータイベントを操作する場合は、mapを使用します。

オブザーバブルの実際のユーザーは、subscribe()が必要です。なぜなら、subscribe()がなければ、オブザーバブルはまったく実行されないからです。 (forEach()またはtoArray()およびおそらく他のものも同様に動作して、subscribe()の代わりにobservableを実行します)

subscribe()は、サブスクライブできないSubscriptionを返しますが、サブスクリプションをキャンセルするために使用できます。

map()は、サブスクライブ可能なObservableを返します。

76

応答を変換するミドルウェアとしてマップを考えてください。

this.http.get('http://172.17.40.41:8089/api/Master/GetAllCountry')
.map(r=>r.json())
 .subscribe(result => {
              // here result would have json object that was parsed by map handler...
            },failurCallback,completeCallback)

subscribeはobservableを呼び出すために使用されます。 cold-vs-hot-observables の良いドキュメントを読んでください

30
A.T.

非同期リクエストを実行するには、subscribeが必要です。 mapを設定した場合-要求はトリガーされません。確認してもいい。

多くのサブスクライバーが結果を使用できるため、mapを使用してデータを前処理することをお勧めします。したがって、各クライアント(サブスクライバー)に前処理を追加する代わりに、すべてのデータスキーマで単一の出力を準備できます。

12
VadimB

.map()はrxjs演算子で、配列[]の結果を表示します.json()の形式

https://www.learnrxjs.io/operators/transformation/map.html

2
N4R35H