這是我的許可服務。我想要一個布爾陣列。
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)
})
我應該做些什么?我究竟做錯了什么?
提前致謝!
uj5u.com熱心網友回復:
從您的服務方法的名稱來看,我假設您實際上想zip在所有 Observables 發出之后使用 which emits ,而不是forkJoin僅在所有源 observables完成后才發出。
另外,請記住,每個可觀察物件都需要訂閱者才能發出任何內容。因此,請確保您確實訂閱了hasPermissionsForX().
壓縮
分叉加入
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/437998.html
