【问题标题】:AngularFire Rxjs subscription - return nill resultsAngularFire Rxjs 订阅 - 返回 nill 结果
【发布时间】:2019-06-05 08:14:44
【问题描述】:

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

这是我的代码:

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 没有返回任何结果并返回一个空数组,那就太好了。抱歉,如果措辞不好,我对这种情况所需的术语并不完全有信心。

【问题讨论】:

    标签: rxjs google-cloud-firestore angularfire2


    【解决方案1】:

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

      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 并检查结果是否存在或返回空数组。然后将它们的结果合并到一个单独的数组中并返回。让我知道这是否是您需要的。

    【讨论】:

    • 谢谢你确实有效,但是在没有工作的情况下,它根本不会返回任何东西。我所做的不是显示此列表的加载状态。感谢您的帮助。
    猜你喜欢
    • 2018-09-21
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多