【发布时间】:2018-11-18 00:40:58
【问题描述】:
我想这个问题以前有人问过,我尝试了所有能找到的解决方案,但都无济于事。 我对 RxJs 有点陌生,如果这看起来很简单,我深表歉意。
考虑以下服务:
getSessionsByCampaign(campaignDBID: number) : Observable<CfgCampaignGroup[]>{
return this.http.get<CfgCampaignGroup[]>('http://localhost:4567/api/configuration/sessions?campaign=' + campaignDBID);
}
getDNByDBID(dnDBID: number): Observable<CfgDN[]>{
return this.http.get<CfgDN[]>('http://localhost:4567/api/configuration/dns?dbid=' + dnDBID);
}
我有一个组件需要:
- 获取getSessionsByCampaign的结果
- 然后,对于返回的每个元素,调用 getDNByDBID(从元素中传递一个值)
我得到的最接近的是:
this._configurationService.getSessionsByCampaign(this.campaignDBID).subscribe(dialingSessionsList => {
this.dialingSessions = dialingSessionsList;
dialingSessionsList.forEach((e) => {
this._configurationService.getDNByDBID(e["CfgCampaignGroup"].origDNDBID.value).subscribe(dn => this.dns.push(dn[0]));
})
});
但显然,当我尝试在我的组件模板中使用 this.dns 时,它是未定义的...
我查看了 mergeMap、switchMap 和 forkJoin,但无法使它们适应我的特定情况(事实上第一次调用返回一个数组,而我需要对数组的每个元素进行第二次调用)。
【问题讨论】:
标签: typescript rxjs angular6