如何使用forkJoin等待完成所有可观察的方法

时间:2018-10-11 11:24:01

标签: angular rxjs

我必须等待几种可观察的方法完成,我想为此使用forkJoin。 示例:

forkJoin(
  this.loadUserRoles(),
  this.loadDepartments()
).subscribe(result => { 
 //some logic
});

loadUserRoles() {
  return new Observable(obs => { this.userService.getRoles().subscribe(
    resp => this.loadUserRolesSuccess(resp),
    this.loadUserRolesError);
  });
}

LoadDepartments方法类似于LoadUserRoles。 我尝试使用obs.next(),但是它不起作用。是否可以通过这种方式使用forkJoin?有什么方法可以等待完成的几种方法吗?

1 个答案:

答案 0 :(得分:1)

您可以将loadUserRole简化为此,如果您的loadUserRoles中没有复杂的事情,那么确实不需要创建新的Observable。

loadUserRoles() {
       return this.userService.getRoles().pipe(
                map(res=>this.loadUserRolesSuccess(res))
               ,catchError(e=>this.loadUserRolesError(e)))
}

 forkJoin(
    this.loadUserRoles(),
    this.loadDepartments()
 ).subscribe(([result1,result2]) => { 
 //some logic
 });