2017-02-16 64 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 
    }) 
} 

我該如何去使用Promise做這件事?

+0

這與角度有什麼關係? – echonax

+0

@echonax在我的情況下,這是一個角度2的項目 –

+1

所以你所要求的是如何寫一個單身?我一直認爲Angular服務提供了這個功能。 – 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 
    }) 
}