Aurelia Js在App构造器上等待数据

问题描述 投票:5回答:1

我正在开发aureliajs中的应用程序。开发过程已经开始了好几个月,现在,后端开发人员希望将他们的服务版本化。所以我有一个Web服务来调用以获取每个服务器端(web api)应用程序的版本,然后,对于进一步的请求,调用正确的api地址,包括其版本。

所以,在app.js我请求系统元并将其存储在某个地方。但是在请求完成之前,一些组件会被初始化。因此,他们不会找到初始化版本并请求错误的服务器数据。

我想让app.js构造函数等待,直到检索到这些数据。例如这样的事情:

export class App {
  async constructor(...) {
    ...

    await this.initializeHttp();

    ...
  }

  initializeHttp(){
    // get the system meta from server
  }
}

但是这个解决方案不适用。因为构造函数不能是异步的。那么在检索系统元之前我应该​​如何阻止作业呢?

UPDATE

问题不是this question的重复。在那个问题中,外层有一个地方可以等待初始化工作;虽然在我的问题中,主要的问题是,在哪里等待。所以问题不仅仅是构造函数中的异步函数,而是阻止所有aurelia作业,直到异步作业结算。

javascript ecmascript-6 promise async-await aurelia
1个回答
2
投票

Aurelia提供了许多处理异步流的方法。如果您的自定义元素是路由组件,那么您可以利用activate生命周期来返回承诺并异步初始化http服务。

否则,在完成初始化之前,可以使用CompositionTransaction进一步停止该过程。你可以在https://tungphamblog.wordpress.com/2016/08/15/aurelia-customelement-async/看到一个初步的例子

您还可以在引导Aurelia应用程序时利用configure函数的异步性质来进行初始化:

export function configure(aurelia) {
  ...
  await aurelia.container.get(HttpServiceInitializer).initialize();
}
© www.soinside.com 2019 - 2024. All rights reserved.