ここ最近、RxJSに入門していた。RxJSを使ったデータフローの設計からチャレンジしてみたが、いくつか壁にぶつかり、こりゃエライこっちゃと感じた。
方針: Push-basedで取扱が容易なデータフローを構築する
Switch from pull to push-based approach with RxJS | by Wojciech Trawiński | JavaScript everyday | Medium
https://bitrock.it/blog/getting-started-with-react-push-based-architecture.html
Push Based Architecture With Rxjs! · GitHub
ネット上に転がっているAngular周りのベストプラクティスやflutter界隈で使われているBLoCを参考に、内部にstate$という名前のBehaviorSubjectを持ち、関心のある値が変更された時だけ値が流れるようなObsevableを公開するクラスを定義することで、Push-basedでかつ中央集権な状態を持つ取扱の容易な状態管理を行おうとした。
基本的にはうまく動いたが、一つ、errorを誤ってstate$に流してしまった時に後続のobservable達を巻き込み再起不能になることがあり、state$にerrorが流れないことを静的に担保することもできず、こりゃ一体どうしたことかと思い悩んだ。