Javascript 如何使用构造函数上的异步调用注入服务,2

Javascript 如何使用构造函数上的异步调用注入服务,2,javascript,http,typescript,promise,angular,Javascript,Http,Typescript,Promise,Angular,这就是问题所在:我有一个服务在构造函数中发出HTTP请求: 构造函数(公共http:http,公共地理位置:地理位置){ this.http=http; this.geolocation=地理位置; //Http请求…这将在完成时设置类的变量预测。 这是预测(16); }Angular2建议在Ngonit内部做繁重的工作,而不是在构造函数内部 ngOnInit是一个生命周期钩子/事件。您正在尝试绕过角度生命周期 您似乎认为您的服务是在启动期间启动的。事实并非如此。即使您的服务是在根级别提供的,

这就是问题所在:我有一个服务在构造函数中发出HTTP请求:

构造函数(公共http:http,公共地理位置:地理位置){
this.http=http;
this.geolocation=地理位置;
//Http请求…这将在完成时设置类的变量预测。
这是预测(16);

}
Angular2建议在Ngonit内部做繁重的工作,而不是在构造函数内部


ngOnInit是一个生命周期钩子/事件。

您正在尝试绕过角度生命周期


您似乎认为您的服务是在启动期间启动的。事实并非如此。即使您的服务是在根级别提供的,也只能及时初始化。您可能希望在启动逻辑期间调用一些公共init方法以确保其初始化。

如果
forecast
是一个承诺,您应该这样做
[weather list]=“(forecast | async)?.list”
它本身不是一个承诺/可观察的。但是,如果我能将预测更改为承诺,我会研究和观察好的方法。如果它不是承诺或可观察的,那就好了(我认为这是因为你问题的一部分)。您可以删除
|async
并保留
forecast?.list
。请参阅ngOnInit,它适用于组件,而不适用于服务(可注入)。您可以调用异步函数,您不能等待构造函数中的异步函数,然后您可以使用“then”来执行您的命令