非同期ネスト
ゲームブックアプリの進捗ですが、シナリオデータや、現在のプレイデータのインポート・エクスポート部分に手こずりましたが、ようやくチェックポイントが見えたところです。
ローカルストレージへのデータコピーや逆の読出し処理は非同期処理になります。
一つのデータに対して、一つのキーが対応します。
読み取りの例
------------------------------------------
this.storage.get(this.strKeyNowPlay)
.then((t_nowPlay)=>{
何かの処理
}
------------------------------------------
この例では"t_nowPlay"が、ストレージから読み取られた値で、これ自体がデータ構造であっても構いません。
ですので(いくつあるか判らない)保存してある全シナリオと現在のプレイデータをひとまとめにして同時に読み書きするならば、コーディング的には手間は減ります。
ただし、その場合は次のページに進むたびに大量の(ほぼ関係ない)データをコンティニューデータ作成のためにストレージに書き出したり、あまり採用したい方法ではありません。
※ここまで書いてストレージの最大容量についての警告も必要な気がしてきました。
いや、絶対に必要かも
その為データを読み込んで、その結果により、それぞれ異なる非同期処理を行うというコードをいきなり書いていたら、グチャグチャなコードになってきた点は大いに反省です。
ただ、やらなければいけない事の全体像が見えてくると、失敗なしにこういうコードを書くことは無理だったなと思います。
久しぶりに(文字通り)頭痛のするプログラミングになりましたが、結局、本質が複雑な問題は、整理する事は出来ても単純化できないという事ですね。
と思って一息入れて外出してたら、かなり単純な解決策を思いついてしまった・・・
とりあえず保存して、試してみます。