即時通訊使用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,而不是返回該數組上的每個對象項。我將不勝感激。
謝謝。