前置き
複数のobservable をまとめる関数について、気になったあれこれを調べて動作確認をしたのでそのメモ。
確認した関数は以下の通り。
- race
- forkJoin
- merge
- combineLatest
- zip
- concat
(下記ページのI have some Observables to combine together as one Observable, and
を押して遷移後にある関数)
確認方法としては、下記ページを作成し、console.log の出力を見て確認した。
なお、確認した関数にはObaservable 以外にも適用できるが、今回はObaservable についてのみ確認した。
本編
race
一口メモ:最初に値を流してきたObaservable のみを使用する。それ以外は無視する。
forkJoin
一口メモ:すべてのObservable がcomplete したら、最後の値のみを配列にまとめて後続に流しcomplete する。
補足:値を流す前にcomplete したObservable があった場合、すぐにcomplete する。
merge
一口メモ:特にひねりとかなく、流れてきた値をそのまま後続に流す。
補足:すべてのObservable がcomplete したらcomplete する。
combineLatest
一口メモ:値が流れてきたら、そのタイミングで最後の値を配列にまとめて後続に流す。
補足1:すべてのObservable から1回でも値が流れてくるまでは何もしない。
補足2:すべてのObservable がcomplete したらcomplete する。
zip
一口メモ:すべてのObservable からn回値が流れてきたら、それぞれのn回目の値を配列にまとめて後続に流す。
補足1:すべてのObservable から1回でも値が流れてくるまでは何もしない。
補足2:1つでもObservable がcomplete し、後続に値を流せなくなったらcomplete する。
concat
一口メモ:順番にObservable を処理していく。
補足1:処理していないObservable から値が流れてきても無視する。
補足2:すべてのObservable がcomplete したらcomplete する。
感想
楽しかった。
1口メモを書くのが一番難しかった。
そして、結局補足も書かないと表現できなかった。
今回の記事は以上です。
前回記事はこちら
詳細見たい人はこちら