2017-02-16 13 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

Итак, все, о чем вы просите, это написать синглтон? Я всегда думал, что услуги 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 
    }) 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^