即时通讯使用observables和flatMap操作符,我写了一个方法,它使API调用并返回一个包含对象数组的observable。基本上我需要的是获取该对象数组并处理每个对象,在处理完所有项目后,我想链接结果以使用另一个我编写的方法创建额外的API调用。下面的代码做什么,我需要:与flatMap链接的观察值地图
this.apiService.getInformation('api-query', null).first().flatMap((apiData) => {
return apiData;
}).subscribe((dataObject) => {
this.processService.processFirstCall(dataObject);
}, null,() => {
this.apiService.getInformation('another-query', null).first().subscribe((anotherQueryData) => {
this.processService.processSecondCall(anotherQueryData);
});
});
但这种方法是不是从我的角度最佳,我想用flatMap但如果我做了以下
this.apiService.getInformation('api-query', null).first().flatMap((apiData) => {
return apiData;
}).flatMap((dataObject) => {
this.processService.processFirstCall(dataObject);
return [dataObject];
}).flatMap((value) => {
return this.apiService.getInformation('another-api-query', null).first();
}).subscribe((value) => {
this.processService.processSecondCall(value);
});
链这些呼叫做第二次API调用会为对象的apiData数组上的每个项目执行一次。我知道我错过或误解了一些东西。但从这个线程的第二个答案Why do we need to use flatMap?我认为第二个flatMap应该返回处理后的apiData,而不是返回该数组上的每个对象项。我将不胜感激。
谢谢。