加载外部配置,并将此配置用于另一个http调用



对于我们的应用程序,我们需要从外部url读取配置,比如http://myhost/config.json.此配置文件包含一个apiUrl,我们应该将其用于所有其他http请求(Rest)。

我尝试将APP_INITIALIZER与一个工厂方法一起使用,该方法调用我们的服务来加载配置。这将返回一个Observable。

当我们打开页面时,会执行获取请求以获取所有客户。这是通过http请求完成的,该请求应该使用配置中的apiUrl。

但是,系统不会等到第一个调用(获取配置)准备好,所以apiUrl还不可用。

一种选择是将每个调用包装为类似(伪):

this.configService.getConfig().subscribe(config => {
this.customerService.getCustomers(config);
})

这是不可取的,因为其他开发人员应该直接调用customerService,而不应该为配置而烦恼。

当我们可以在构造函数中注入Config对象并直接使用它时,应该会很好。这可能吗?

如果没有,我如何确保配置可用于所有其他API调用(启动时加载)?类似于同步的http.get请求。

Angular版本4.3.4

当我将可观察对象转换为promise时,它似乎会正确等待。

return configObservable.toPromise();

最新更新