1. ホーム
  2. javascript

[解決済み] RXJS observableの.pipe()と.subscribe()の違いについて

2023-07-17 19:51:39

質問

最近、私は .pipe() の中では値を返すことができますが .subscribe() .

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

例えば、この関数があったとして、それを「deposit」と呼ぶことにします。この関数は、口座の残高を返すことになっていますが、このようにすると

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

observableを返すので、こうすると。

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

予想通り口座残高が返ってきます。

では、なぜ?

どのように解決するのか?

この pipe メソッドは、観測可能な演算子を連結するためのものであり subscribe は、observableを活性化し、放出された値を聞くためのものです。

pipe メソッドが追加され ウェブパック を使用して、最終的な JavaScript のバンドルから未使用の演算子を削除できるようになりました。これにより、より小さなファイルのビルドが容易になります。

例えば、私がこの関数を持っている場合、それを「deposit」と呼ぶことにします。

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

observableを返します。

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

とすると

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

予想通り口座残高が返ってきます。

それは返されるものではありません。それは Observable を使い map 演算子を使っています。この例の map 演算子は何もしません。