前提・実現したいこと
JavaScriptでIndexedDBを使用し各種データを保存しようと考えています。
その際、タイトルのように非同期処理を同期的処理にしようとした際につまずいてしまい質問させていただきました。
(IDBObjectStore.get()の後に実行されるonsuccessについても同様の問題が起きています。)
該当のソースコード
javascript
1class storage{ 2 constructor(){ 3 let request_db = indexedDB.open("Storage"); 4 request_db.onsuccess = (event)=>{ 5 this.db = event.target.result; 6 } 7 } 8} 9 10let localStorage = new storage; 11 12console.log(localStorage.db) // => undefined 13setTimeout(()=>{console.log(localStorage.db)},1000) // => IDBDatabase {}
試したこと
async、awaitも試してみたのですが、理解できていないためかうまく動作しませんでした。
(同期的に実行したい部分を関数として切り出し、関数名の前にasyncを入れ、this.db = event.target.result;の部分にawaitを入れてみましたが結果は変わりませんでした)
補足情報(FW/ツールのバージョンなど)
firefox 82.0b2
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。