Javascript承诺就绪
我有一个类(LoadClass),它在页面加载时初始化,在我的例子中打开一个SQLite数据库并执行几个查询。现在,我希望其他组件仅在LoadClass以前加载完数据库时执行代码,但这必须随时发生。出于显而易见的原因,我只想打开数据库一次。它应该是这样工作的:Javascript承诺就绪,javascript,angular,typescript,promise,angular-promise,Javascript,Angular,Typescript,Promise,Angular Promise,我有一个类(LoadClass),它在页面加载时初始化,在我的例子中打开一个SQLite数据库并执行几个查询。现在,我希望其他组件仅在LoadClass以前加载完数据库时执行代码,但这必须随时发生。出于显而易见的原因,我只想打开数据库一次。它应该是这样工作的: class LoadClass { // This executes directly on page load constructor() { this.load_my_database().then(
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来实现这一点?这与angular有什么关系?@echonax在我的例子中,它是angular 2项目,所以你所要求的就是如何编写一个单例?我一直认为Angular services提供了开箱即用的功能。你真的需要。存储数据库加载承诺,并根据需要重新使用它。你可以随时调用
then()
,这与angular有什么关系?@echonax在我的例子中,这是angular 2项目,所以你需要的就是如何编写一个单例?我一直认为Angular services提供了开箱即用的功能。你真的需要。存储数据库加载承诺,并根据需要重新使用它。您可以根据相同的承诺随时调用then()
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
})
}