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

그래서 싱글 톤을 쓰는 방법은 무엇입니까? 나는 앵귤러 (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 
    }) 
}