我想用其他数据映射Observable中数组的值。
例如:我有一个(用户)团队,我从服务中收到的值包含一组用户。但是在我将此列表分配给局部变量之前,我想向User对象添加其他数据(假设用户已实现的目标数量)。
public team: Array<User> = [];
this.userService.getCurrentTeam()
// the result is an array of users: [{id: 1, name: 'John'}, {id: 6, name: 'Jane'}, ...]
.mergeMap(people => people) // flatten the array
.mergeMap(person => {
return this.gameService.getGoalsForUser(person);
}).subscribe((team) => {
this.people = team; // this won't work: see below
});
由于getCurrentTeam()的结果是一个用户数组,因此我首先需要分解(展平)该数组(使用第一个mergeMap完成),以便能够在mergeMap函数中获取每个用户的目标。
要使以上代码块正常工作,必须将订阅函数重写为team
变量,而不再是数组:
subscribe((person) => { this.team.push(person); } );
此订阅的问题在于,只要数据更改,就会将重复的用户推入团队数组。
关于这个概念,我有两个问题:
this.people = team;
)