これはブログです。

3DCGとかWebとかカメラとか

この記事は更新されてから1年以上経過しています。

2018/06/27

JavaScriptの非同期処理

作っているアプリで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();
            }
        });
    })
}

 

参考:JavaScriptの同期、非同期、コールバック、プロミス辺りを整理してみる

カテゴリ: プログラミング / タグ:

まだコメントはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。