ではIndexedDBにはまってます。(その11)でやったラングオブジェクトを使っていろいろと始めます。
という予定で、予告までしたのですが、その前に重要な訂正があります。「ラングオブジェクトを使っていろいろと…。」は次回にします。
IndexedDBにはまってます。(その7)で、データベースを開いた成功イベントの発火を受けた処理枠にあるデータベースの閉鎖について、次のように記述があります。
また、データベース閉鎖のclose()メソッドですが、他のブラウザでもイベント発火を受け取れないことを確認しましたのでコメントアウトして記載しておきます。
ここでまた余計な一行になりますが、今後の対応に期待して受け取り処理枠を記述しておきます。間違っていないと思います。いつか「データベースが閉鎖されました。」という文字列がコンソールに現れるのを期待します。
それで、その余計な一行を次のよう記述してあります。
openRequest.addEventListener('success', (event)=>{
(略)
//db.close();
db.addEventListener('close', ()=>{console.log(`データベースが閉鎖されました。`);}, false);
}, false);
その一行の前に「//db.close()」とありますが、これについて訂正します。
当初は、「db.close()」は生きていて、IndexedDBにはまってます。(その5)からはコメントアウトしていて、ちょっとそれじゃ不安だったので、(その7)で閉鎖イベント発火を受ける設置した次第です。
コンソールを使った実験では、まーったく問題なかったのですが、少し重複した処理を組んだら動作が不明瞭なることがわかりました。(ごっちょきりました。←湘南弁)
なんと!「db.close()」は重要です。
データベースを開くのが成功して、処理を終えたら勝手に閉鎖していると思っていたら違いました。
最後にちゃんと閉鎖してあげないとプロミス(たぶんね)が居座り、次の操作の邪魔をします。これに気がつくのにまる一日かかってしまいました。動作がまちまちなもので懊悩しました。誰か早く言ってよ。
ああでも、「データベースが閉鎖されました。」がコンソールに現れないのは相変わらずです。
ともかく、今後は「db.close()」は生きで参ります。
ここに至るまで、いくつか訂正や宗旨替えがあったように思います。ふわふわとした内容で申し訳ありません。
自らの備忘を兼ねて投稿をしているとは言え、人に読んでもらえるように努力(成果はいざ知らず。)をすると自分の理解が正しい方向に向かってくれるので助かります。どうかご慈悲を。そかさ。