如何合并两个可观察值并在第二个可观察值返回时返回新的可观察值取决于第一个可观察值。 在这里,我期待一个新对象,它是第一个的几个值和第二个的几个值的组合。
export interface EmpData {
id: number;
name: string;
}
export const EMPDATA: EmpData = {
id : 11, name : 'xyz'
};
export interface EmpDetails {
id: number;
desiganation: string;
}
export const EMPDATAILS: EmpDetails = {
id : 11, desiganation : 'manager'
};
getEmpData(name: string): Observable<EmpData> {
// search based on name and return object
// temporary returning some data
return of(EMPDATA);
}
getEmpDetails(id: number): Observable<EmpDetails> {
// search based on id and return object
// temporary returning some data
return of(EMPDATAILS);
}
getEmploye(name: string): Observable<any> {
return this.getEmpData(name).pipe(
flatMap((response) => {
return this.getEmpDetails(response.id);
);
});
this.getEmploye(xyz).subscribe(response =>
// here I'm expecting response as below, i.e. combination of first and
//second observable
//{
// id: 11,name:'XYZ', desiganation : 'manager'
//}
答案 0 :(得分:3)
getEmploye(name: string): Observable<any>
{
return this.getEmpData(name).pipe(
switchMap((response) => {
return forkJoin(of(response),this.getEmpDetails(response.id);
),
map(res=>{return {...res[0],...res[1]}}))
}
您获得this.getEmpData。然后返回响应和this.getEmpDetails的并集的jorkJoin。最后,您将结果映射为具有两个属性的uniqe对象
注意:如果您想将主要数据和详细数据分开,则最后一张地图可以像
map(res=>{return {...res[0],detail:res[1]}}))
答案 1 :(得分:1)