Con*_*ver 5 javascript promise async-await ecmascript-6 aurelia
我正在用aureliajs开发一个应用程序。开发过程开始了许多个月,现在,后端开发人员希望对他们的服务进行版本控制。因此,我有一个Web服务可调用以获取每个服务器端(Web api)应用程序的版本,然后针对进一步的请求,调用正确的api地址(包括其版本)。
因此,在app.js中,我请求系统元并将其存储在某处。但是某些组件在此请求完成之前已初始化。因此,他们将找不到初始化的版本并请求错误的服务器数据。
我想让app.js构造函数等到检索到此数据。例如这样的事情:
export class App {
async constructor(...) {
...
await this.initializeHttp();
...
}
initializeHttp(){
// get the system meta from server
}
}
Run Code Online (Sandbox Code Playgroud)
但是此解决方案不适用。因为构造函数不能异步。因此,在检索系统元之前,我应该如何阻止该工作?
这个问题不是这个问题的重复。在这个问题中,外部类中有一个地方等待初始化工作;尽管在我的问题中,主要的问题是等待的位置。因此,问题不仅仅在于构造函数中的异步函数,还在于在异步作业解决之前,阻止所有aurelia作业。
Aurelia 提供了多种处理异步流的方法。如果您的自定义元素是路由组件,那么您可以利用activate生命周期返回 Promise 并异步初始化 http 服务。
否则,您可以CompositionTransaction在完成初始化之前进一步停止该过程。您可以在https://tungphamblog.wordpress.com/2016/08/15/aurelia-customelement-async/查看初步示例
您还可以在引导 Aurelia 应用程序时利用configure函数的异步性质来进行初始化:
export function configure(aurelia) {
...
await aurelia.container.get(HttpServiceInitializer).initialize();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |