Javascript承诺准备好了

时间:2017-02-16 17:15:36

标签: javascript angular typescript promise angular-promise

我有一个类(LoadClass),它在页面加载时进入,并在我的情况下打开一个SQLite数据库并执行几个查询。现在我希望其他组件只在LoadClass之前完成加载数据库时执行代码,但这必须随时发生。出于显而易见的原因,我只想打开我的数据库一次。它应该是这样的:

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
    })
}

我将如何使用Promises进行此操作?

1 个答案:

答案 0 :(得分: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
    })
}