Angular 使用 fork-join 的订阅方法不起作用

Angular subscription method with fork-join doesn't work

这是我的许可服务。我想要一个布尔数组。

import { forkJoin, Observable } from "rxjs";
import { map } from 'rxjs/operators';                                                   
           

private hasPermission(lessorId: number, userId: number, permission: string): boolean {
 // returns boolean. It works correctly
}

hasPermissionsForX(permissions: string[]): Observable<boolean[]> {
return forkJoin([
  this.userService.getUser(), //returns Observable
  this.lessorService.getLessor() //returns Observable
]).pipe(
  map(([user, lessor]) => permissions.map(permission => this.hasPermission(lessor.lessorId, user.userId, permission)))
)}

但是,我的订阅方法不起作用。该方法尚未进入函数。我什至得不到 console.log 回复。这是我的订阅方式。

const permissionsToCheck = ['firstPermission', 'secondPermission', 'thirdPermission'];
this.permissionService.hasPermissionsForX(permissionsToCheck).subscribe(([firstPermission, secondPermission, thirdPermission]) => {
  console.log(firstPermission, secondPermission, thirdPermission)                              
})

我该怎么办?我做错了什么?

提前致谢!

根据您的服务方法的名称来判断,我假设您实际上想使用 zip,它在所有 Observables emit 之后发出,而不是 forkJoin 只会发出一次所有源可观察量 complete.

此外,请记住,每个可观察对象都需要订阅者才能发出任何内容。因此,请确保您实际订阅了 hasPermissionsForX().

的结果

zip

forkJoin