Angular 9执行同步调用,该调用在执行其他操作之前等待



我有一个Angular 9应用程序,我想要的是当有人访问我的网站时,我会进行同步休息端点调用,并使用接收数据将数据填充到不同的组件中,如颜色和货币类型。没有这些信息,组件就不会产生正确的格式或颜色。

现在我有一个服务,它从window.location.hostname获取主机名,然后我进行后端调用。我在网上看到,您可以进行asyncawait组合,以使其余调用同步。await工作得很好,但async部分是一场灾难。我之所以这么说,是因为这会导致网站的其他部分构建,包括组件。这意味着组件缺少应该从服务中获得的信息,因为它们在服务仍在执行rest调用时继续加载/构建。

我需要一种在Angular中进行同步调用的方法,并在下载信息之前让整个网站等待。我能做这个吗?

考虑到浏览器API异步处理所有ajax和资产http调用,我认为这是不可能的,这与我所知道的情况不可改变。此外,我认为async/await不起作用,因为它们只是promise api的语法糖。你能试试这种方法吗?

  • https://github.com/angular/angular/issues/9047#issuecomment-224075188
  • https://dzone.com/articles/how-to-use-the-app-initializer-token-to-hook-into我建议将其添加到app.module中的providers[]中,如第二个链接所示:

{
provide: APP_INITIALIZER,
useFactory: appInitializer,
deps: [SomeService, ], // in case you need any dependencies
multi: true,
},

最新更新