簡體   English   中英

Angular 使用 fork-join 的訂閱方法不起作用

[英]Angular subscription method with fork-join doesn't work

這是我的許可服務。 我想要一個 boolean 數組。

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)))
)}

但是,我的訂閱方法不起作用。 該方法尚未進入 function。我什至無法獲得 console.log 響應。 這是我的訂閱方式。

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

我應該做些什么? 我究竟做錯了什么?

提前致謝!

從您的服務方法的名稱來看,我假設您實際上想使用zip ,它在所有 Observables emit之后發出,而不是forkJoin ,它只會在所有源 observables完成時發出。

另外,請記住,每個可觀察對象都需要訂閱者才能發出任何內容。 因此,請確保您實際訂閱了hasPermissionsForX()的結果。

zip

分叉連接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM