RxJS
とは、リアクティブプログラミングを行うJSのライブラリのこと。RxJS
は難しいが理解すれば複雑なデータ処理を簡単に書くことができる。
リアクティブプログラミング
とは、通知されてくるデータを受け取るたびに関連したプログラムが反応し(リアクション)して、処理を行うようにするプログラミングのこと。リアクティブプログラミング
のおかげで非同期処理を直感的に考えることができる。
例)
this.A ← Aに対してb,c,d連続して処理を行う
.b
.c
.d
Observable
は一本の川と考えるといい。川にユーザーが何かを流したりすることができる。例えば、ユーザーが川にゴミを流して、そのゴミを取り除くみたいな処理を書くこともできる。
で、この処理のことをOperator
という。例えば、distinctUntilChangedメソッド
は前の値と違う場合にのみストリームを流すというもの。
そして、この川の下流で取りきれなかったゴミなどを受け取ることもできる。これはSubscribeメソッド
やtoPromise
実行後のthen
でデータ(例で言えばゴミ)を受け取ることもできる。
Observable
をテンプレート形式で展開するための仕組みがasyncパイプ
という機能。asyncパイプ
を使うことでSubscribeメソッド
を使って明示的に実行しなくても使うことができる。asyncパイプ
を使えばコンポーネントの記述量が少なくなる。
Subject
とは、任意のタイミングでObservable
(ストリーム•川)を流すことができるクラス。
Subject
はObservable
を継承している。angularではObservable
よりSubject
を使う方が多い。