场景:在ngOnInit上,我需要调用3个API,Fork-Join,并将数据保存到一个数组中.第一接口是独立的.第二个也是独立的,但第三个取决于第二个API的响应.
我以前没有用过forkJoin或mergeap,我有点困惑.
What's happening :个
我已经创建了一个通用方法,该方法使用一个标识符来确定要命中哪个端点和具有所需参数的对象,然后进行响应和错误处理.
服务文件:
callMethod(str, obj, cb?) {
return new Observable(observer => {
this.httpService.getHttpParams(this.URLS_CONSTANT[str], obj, res => {
observer.next(res.data.content ? res.data.content : res.data);
observer.complete();
}, err => { })
})
}
所以,我可以从所有3个API获取响应,但是fork-Join之后的最终结果包含第一个和第三个API的响应.2号的回复不见了,我不知道是怎么回事.
这是我写的方法:
fetchAllData() {
let inp = this.input_row;
let response1 = this.service.callMethod('rate_plan', { companyId: inp.cpnyId, servAbbr: inp.servAbbr, productNumber: inp.prdctNo, orgNumber: inp.orgNo, rateCategory: inp.rateCat, ratePlanNumber: inp.ratePlanNo });
let response2 = this.service.callMethod('approve_rate', { prodctNo: inp.prdctNo, servAbbr: inp.servAbbr, companyId: inp.cpnyId, ratePlanNo: inp.ratePlanNo }).pipe(map(item => {
this.approveRate = item
let appRate = item[0]
return appRate
}), mergeMap(data => this.service.callMethod('rate_detail', { companyId: inp.cpnyId, ratePlanNo: inp.ratePlanNo, rateCaseGrpngNo: data['rateCaseGrpngNo']})) )
forkJoin([response1, response2]).subscribe(x => console.log(x))
}
}
最终的控制台具有来自API调用1和3的响应值.创建具有三个独立对象的数组需要进行哪些更改.如果需要进一步澄清,请告诉我.