我在Angular2應用程序中編寫的服務(稱爲ContentService)中有一個Observable,看起來像這樣(我編輯了這個/減少了內容以便於閱讀):使用RxJS在Angular2中組合兩個可觀察的流.flatmap
@Injectable()
export class ContentService {
constructor(private http:Http, private apiService:ApiService) {
this.content = this.http.get('src/i18n/en.json')
.map((res:Response) => {
let json: {} = res.json();
return mapData(json);
})
mapData() {
// function stuff to format data
}
現在,我想打個電話給我注入apiService,它返回具有相同的結構,什麼是this.content
產生一個JSON對象。請注意,this.content
來自本地json文件,而apiStream來自第三方API/http提要。我需要將apiService的結果concaching(或添加)到this.content
observable。我認爲flapMap是解決這個問題的最好方法,但我犯了一些語法錯誤(如果我正在以正確的方式進行討論)。我正在考慮添加像這樣的新內容
this.content = this.http.get('src/i18n/' + this.userLang + '.json')
.map((res:Response) => {
let json: {} = res.json();
return mapData(json);
})
.flatMap(() => {
apiService.getAllCurrentListings().subscribe(response => {
return mapData(response);
})
});
但是,這是產生一個錯誤,所以我顯然做錯了什麼。我是否應該打電話給我的API服務,就像不在.flapMap
中一樣,我得到我想要的數據,所以我明顯犯了一個語法錯誤。如何將apiService數據添加到我原來的this.content
調用結果中?
非常感謝提前。
感謝您的更新,其實我決定去與forkJoin但是我需要重新開發以此爲'this.content'不應該等待api服務 –