export class InferencePageComponent implements OnInit {
constructor(private campaignService: CampaignService) {
this.campaignService.getStrategy1().subscribe(data => {
this.Strategy1 = data;
});
this.campaignService.getStrategy2().subscribe(data => {
this.Strategy2 = data;
});
this.campaignService.getStrategy3().subscribe(data => {
this.Strategy3 = data;
});
}
我有来自上述服务的3个不同功能的数据。我还有一个函数,它从这3个服务中加载数据并对其进行一些处理。但是在所有这3个服务完全加载后,我无法加载该功能。 什么是正确的方法?
答案 0 :(得分:0)
您通过 forkJoin
处理它,forkJoin将在所有调用完成后返回数据并返回结果
使用forkJoin处理服务中的所有这些调用,并在组件内部订阅它,一旦获得数据,就可以调用另一个函数。
Merging http observables using forkjoin
这是解决问题的最佳方法,您也可以使用 observable.zip
在您的组件上进行此操作。
答案 1 :(得分:0)
你可以使用Observable.zip(), 以下是可以为您提供帮助的代码段。
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/zip';
// then in your component, do as below :
Observable.zip(
this.campaignService.getStrategy1(),
this.campaignService.getStrategy2(),
this.campaignService.getStrategy3()
).subscribe(([Strategy1Data,Strategy2Data, Strategy3Data])) => {
this.Strategy1 = Strategy1Data;
this.Strategy2 = Strategy2Data;
this.Strategy3 = Strategy3Data;
this.yourFunctionForExtraProcess();
}