web-dev-qa-db-ja.com

RXJSオブザーバブルの.pipe()メソッドと.subscribe()メソッドの違い

最近、.pipe()内ではなく.subscribe()内では値を返すことができることに気付きました。

これら2つの方法の違いは何ですか?

たとえば、この関数がある場合、「deposit」と呼びましょう。これを行うと、口座残高を返すことになります。

deposit(account, amount){
    return this.http.get('url')
    .subscribe(res => {
        return res;
    }
}

オブザーバブルを返し、私がこれを行うと:

deposit(account, amount){
    return this.http.get('url')
    .pipe(
        map(res => {
            return res;
        });
    );
}

期待どおりに口座残高を返します。

なぜ?

18
Amadou Beye

pipeメソッドは、オブザーバブルオペレーターをチェーンするためのものであり、subscribeは、オブザーバブルをアクティブにし、発行された値をリッスンするためのものです。

webpackが未使用の演算子を最終的なJavaScriptバンドルから削除できるようにするために、pipeメソッドが追加されました。これにより、小さなファイルを簡単に作成できます。

たとえば、この関数がある場合、「deposit」と呼びましょう。これを行うと、口座残高を返すことになります。

それが返すものではありません。 Subscriptionを呼び出したときに作成されたSubscribeオブジェクトを返します。

期待どおりに口座残高を返します。

それが返すものではありません。 Observable演算子を使用するmapを返します。あなたの例のマップ演算子は何もしません。

25
Reactgular