具有内部地图订阅的 Angular2 rxjs switchMap 发出多个可观察值

Angular2 rxjs switchMap with inner map subscribtion emitting multiple observables

我有一个带有内部映射函数的开关映射,它是 returning 多个可观察对象,如下所示:

  this.fb
    .getUsersGroupsAsObservable(user.uid, 'contacts')
    .switchMap(groups => {
      return groups.map(group => this.fb.getJobsbyGroup(group.id));
    })
    .subscribe(res => {
      console.log(res); // emits Observable {_isScalar: false, source: Observable, operator: MapOperator}
      this.job$ = res;
    });
});

这是 运行 两次正确 return 两个可观察值,如下所示:

Observable {_isScalar: false, source: Observable, operator: MapOperator}
Observable {_isScalar: false, source: Observable, operator: MapOperator}

有什么方法可以 return 可观察对象列表(考虑 AngularFireList)然后我可以用异步管道渲染它?

更新:@concat 帮助我得到了这个问题的答案(但由于某些原因答案被删除了),我更新了我的代码如下(它现在运行良好):

  this.fb
    .getUsersGroupsAsObservable(user.uid, 'contacts')
    .switchMap(groups =>
      combineLatest(groups.map(group => this.fb.getJobsbyGroup(group.id))),
    )
    .subscribe(res => {
      console.log(res);
      this.jobs = [].concat.apply([], res);
    });

@concat 帮助我解决了这个问题,我需要做的就是使用 combineLatest 并将我所有的数组组合成一个数组,然后我将那个数组展平,可能有更简单的方法这个但是嘿它有效:

  this.fb
    .getUsersGroupsAsObservable(user.uid, 'contacts')
    .switchMap(groups =>
      combineLatest(groups.map(group => this.fb.getJobsbyGroup(group.id))),
    )
    .subscribe(res => {
      console.log(res);
      this.jobs = [].concat.apply([], res);
    });