使用rxjs以角度连续调用api

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

假设我有3个服务在app.component中调用,每个服务在自己的服务中订阅(),那么我怎样才能逐个获得响应。

app.component.ts

ngOnInit() {
  this._salesstageService.refreshSalesstage();
  this._opportunityMailsService.RefreshTop50();
  this._opportunityService.getOpportunities();
}

例如,我有三个service.ts文件,但在这里你可以看到一个服务函数来调用api。

app.service.ts

   getOpportunities() {
       return this.http.get(this._opportunitiesUrl)
        .do(res => this._errorService.checkResponse(res))
        .map(res => <Opportunity[]>JSON.parse(res.text(), 
              this.opportunityReviver))
        .catch(err => this._errorService.handleError<Opportunity[]>(err))
        .subscribe(
          opportunities => {
            if(opportunities instanceof Array){
                this._opportunities = opportunities;
               this.opportunities$.next(this._opportunities);
            }
        })
    } 
angular rxjs angular-services
1个回答
0
投票

由于您的服务似乎发布了observable,因此以嵌套方式订阅它们。

this._salesstageService.salesstage$.subscribe(() => {
  this._opportunityMailsService.RefreshTop50();
  this._opportunityMailsService.mail$.subscribe(() => this._opportunityService.getOpportunities());
});

this._salesstageService.refreshSalesstage();
© www.soinside.com 2019 - 2024. All rights reserved.