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 它。让我知道这是否是您所需要的。
我有两个需要遍历的集合,首先获取用户组,然后遍历每个组并获取与该组关联的作业。这非常有效,但问题是如果没有作业,应用程序将保持加载状态。
这是我的代码:
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 它。让我知道这是否是您所需要的。