作っているアプリでJSONを読み込んでからNeDBにアクセスしようとしたのですが、javascriptの非同期処理の影響かでJSONを読み込む段階で次のJOB(NeDBにアクセス)に移行してしまい、実行するたびにずっとundefinedのdbファイルが生成(もしくは読み込み)されていました。
JSONには読み込むべきdbファイルが書かれているので、JSONの読み込み処理が完了してからNeDBのアクセス処理をしたいのですが、そんなにチェインしないとはいえコールバックは使いたくないのでPromiseを使うことにしました。
下記にコードを載せますが、データなしの場合はrejectを返してonloadでcatchでメッセージを出すべきですね…。
window.onload = () => {
readConfigFile().then(() => loadNedb());
}
const readConfigFile = () => {
return new Promise((resolve, reject) =>{
const storage = require('electron-json-storage');
const path = require('path');
storage.setDataPath(path.resolve(''));
storage.get('colon.json', (error, data) => {
if (error) throw error;
if (Object.keys(data).length === 0) {
// データなし
} else {
// データあり
resolve();
}
});
})
}
コメントを残す