mergeMap具有数组值的Observable

时间:2019-01-02 18:50:06

标签: arrays angularjs typescript ionic-framework observable

我想用其他数据映射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); } );

此订阅的问题在于,只要数据更改,就会将重复的用户推入团队数组。

关于这个概念,我有两个问题:

  • 如何在不破坏数组的情况下(在第一个mergeMap函数中)为单个用户提出其他请求
  • 我可以将数组保留在订阅函数中吗? (this.people = team;

0 个答案:

没有答案