2017-02-16 6 views
1

ページが読み込まれたときにクラス(LoadClass)があり、私の場合にSQLiteデータベースを開き、いくつかのクエリを実行します。今度は、LoadClassがデータベースのロードを以前に完了したときに他のコンポーネントにコードを実行させたいが、これはいつでも実行する必要がある。明白な理由から、私はデータベースを一度開くだけです。Javascript Promise Ready

class LoadClass { 

    // This executes directly on page load 
    constructor() { 
     this.load_my_database().then(function() { 
      // My database finished loading, now my buttons may work. 
     }) 
    } 
} 

function user_presses_button() { 
    LoadClass.ready().then(function() { 
     // Only now something 
    }) 
} 

私は約束を使用してこれを行うにはどうすればいいですか?

+0

これはどのように角度に関連していますか? – echonax

+0

@echonax私の場合は角度2のプロジェクトです –

+1

シングルトンを書く方法は何ですか?私はいつも角度サービスがその機能を箱から出したと思っていました。 – Bergi

答えて

0
class LoadClass { 

    private _ready_promise; 

    constructor() {} 

    // This executes directly on page load 
    page_load() { 
     this._ready_promise = this.load_my_database(); 
    } 

    load_my_database() { 
     return new Promise(function(resolve) { 
      // Do something... 
      // Now my database finished loading, everything else may work. 
      return resolve(); 
     }) 
    } 

    ready() { 
     return this._ready_promise; 
    } 
} 

function user_presses_button() { 
    LoadClass.ready().then(function() { 
     // Only now something 
    }) 
}