AngularFire Rxjs 订阅 - return 无结果

AngularFire Rxjs subscription - return nill results

我有两个需要遍历的集合,首先获取用户组,然后遍历每个组并获取与该组关联的作业。这非常有效,但问题是如果没有作业,应用程序将保持加载状态。

这是我的代码:

this.fb
  .getUsersGroupsAsObservable(user.uid, groupType) // first get the users groups
  .subscribe(groups => {
    combineLatest( // for each group get the jobs belonging to that group
      groups.map(group => this.fb.getJobsbyGroup(group.id)),
    ).subscribe(res => { // if there is no results this wont execute
      this.jobs = [].concat.apply([], res);
    });
  });

理想情况下,如果我能确定 getJobsbyGroup 没有 returning 任何结果并且 return 是一个空数组,那就太好了。抱歉,如果措辞不当,我对这种情况下所需的术语没有完全的信心。

你能看看这是否是你要找的吗? link。 这是要点。你可以检查 this.fb.getJobsbyGroup 是否有结果,然后 return 结果是否 return 未定义。

  this.fb.getUsersGroupsAsObservable(user.uid, groupType)
.pipe(map(groups => groups.map(group => group.id)),
switchMap(groupIds => from(groupIds).pipe(mergeMap(id => this.fb.getJobsbyGroup(id).pipe(map(jobs => jobs ? jobs : []))),toArray())))
.subscribe()

代码解释:从组中,将groupIds隔离到单独的数组中。然后并发调用 getJobsbyGroup 并检查结果是否存在或 return 空数组。然后将它们的结果合并到一个单独的数组中并 return 它。让我知道这是否是您所需要的。