RxJSをStorageの書き込みに使ってみたいと思いました。
寄り道しながら、ゲームブックアプリの開発続けています。
5つほどスロットを用意して、そこにデータをセーブしたリロードしたりまで完了したので、次はサイコロの統計情報の記録を保存のための機能を書いています。
(あと100回以上サイコロを振ったら出目を自分でいじれる機能も追加予定)
仕様としては(他の方法もあり得ますが)以下のように考えました。
・サイコロ1とサイコロ2の出目を記録する配列をそれぞれ用意
・サイコロを振るたびに、その配列に出目を記録
・コンティニューデータ書き込みのタイミングで統計の更新
(シナリオごとに一意の値を持ちます)
こんな機能いるの?と思う方も多いでしょうが、
・サイコロの目が偏っていない?と、まず間違いなく思うことがある
・レアなルートを見たいと思ったらサイコロの出目を自在にする必要があるが、サイコロを(例えば)100回振ったらそういう機能の解禁をしたい
と言う目的からです。
さて閑話休題
何度か書いたこともありますが、ストレージにデータを書き込むと言う操作は非同期処理になります。
イメージとしては
・肉じゃがを作ろうと材料を並べる
・醤油が足りないので手の空いてる家人に買い物に行かせる(非同期処理)
・待っている間に下ごしらえを行う
この例では、いつ買い物(非同期処理)から戻るか判らないし売り切れ等で買ってこれないかもしれない(エラーが起きる)と言う感じですね。
その間もやれることはやりますが、醤油が手元に来てからでないと始められない処理もあるのは判ると思います。
ゲームブックの話に戻ると、コンティニューデータとサイコロの統計データは別なデータとして保存したいと考えています。
一つのデータにすることももちろん可能ですが、更なる機能追加やデバッグしなきゃいけない時に別々にデータ保存を行っていた方が良いかもしれないと現時点では予想しています。
他にも見た(表示されないページも含む)ページや使ったフラグ情報の記録も追加する予定があるので、連続する非同期処理を行う場合のコーディングとしてRxJSを使うのが良さそうだよね?と言う事でタイトルにつながります。
RxJSについては下記の投稿で異なるドメイン上の外部ファイルの読み込みで試しましたが、うまく行くかは次の投稿をお待ちください。
ionic, angular(RxJS), JSONP 別ドメインサーバにファイルを置いただけの取得サンプル
https://ncode.syosetu.com/n5283hn/139/