Aureliajs 在 App Constructor 上等待数据
Aureliajs Waiting For Data on App Constructor
我正在使用 aureliajs 开发一个应用程序。开发过程已经开始好几个月了,现在,后端开发人员想要对他们的服务进行版本控制。所以我有一个 web 服务可以调用以获取每个服务器端 (web api) 应用程序的版本,然后,对于进一步的请求,调用正确的 api 地址,包括它的版本。
因此,在 app.js 中,我请求系统元数据并将其存储在某处。但是一些组件在这个请求完成之前就已经初始化了。所以他们不会发现版本初始化和请求错误的服务器数据。
我想让 app.js 构造函数等到检索到此数据。例如这样的事情:
export class App {
async constructor(...) {
...
await this.initializeHttp();
...
}
initializeHttp(){
// get the system meta from server
}
}
但此解决方案不适用。因为构造函数不能异步。那么在检索到系统元数据之前,我应该如何阻止作业?
更新
该问题不是 的重复问题。在那个问题中,外部 class 中有一个地方可以等待初始化作业;虽然在我的问题中,主要问题是,把这个等待放在哪里。所以问题不仅仅是关于构造函数中的异步函数,而是关于在异步作业解决之前阻止所有 aurelia 作业。
Aurelia 提供了很多处理异步流的方法。如果您的自定义元素是路由组件,那么您可以利用 activate
生命周期来 return 承诺并异步初始化 http 服务。
否则,您可以使用 CompositionTransaction
在完成初始化之前进一步停止进程。您可以在 https://tungphamblog.wordpress.com/2016/08/15/aurelia-customelement-async/
查看初步示例
您还可以利用 configure
函数的异步特性来引导 Aurelia 应用程序在那里进行初始化:
export function configure(aurelia) {
...
await aurelia.container.get(HttpServiceInitializer).initialize();
}
我正在使用 aureliajs 开发一个应用程序。开发过程已经开始好几个月了,现在,后端开发人员想要对他们的服务进行版本控制。所以我有一个 web 服务可以调用以获取每个服务器端 (web api) 应用程序的版本,然后,对于进一步的请求,调用正确的 api 地址,包括它的版本。
因此,在 app.js 中,我请求系统元数据并将其存储在某处。但是一些组件在这个请求完成之前就已经初始化了。所以他们不会发现版本初始化和请求错误的服务器数据。
我想让 app.js 构造函数等到检索到此数据。例如这样的事情:
export class App {
async constructor(...) {
...
await this.initializeHttp();
...
}
initializeHttp(){
// get the system meta from server
}
}
但此解决方案不适用。因为构造函数不能异步。那么在检索到系统元数据之前,我应该如何阻止作业?
更新
该问题不是
Aurelia 提供了很多处理异步流的方法。如果您的自定义元素是路由组件,那么您可以利用 activate
生命周期来 return 承诺并异步初始化 http 服务。
否则,您可以使用 CompositionTransaction
在完成初始化之前进一步停止进程。您可以在 https://tungphamblog.wordpress.com/2016/08/15/aurelia-customelement-async/
您还可以利用 configure
函数的异步特性来引导 Aurelia 应用程序在那里进行初始化:
export function configure(aurelia) {
...
await aurelia.container.get(HttpServiceInitializer).initialize();
}