RxJS forkjoin observables 不检索

RxJS forkjoin observables not retrieving

我需要获取 3 个 API 数据,然后我需要将 Subsidary 与 company 合并,然后到 main 以构建最终对象。

我在我的服务文件中写了下面的 http 请求。

getStaticContent$(): Observable<{
    mainStaticContent$: ObjectList;
    companyStaticContent$: ObjectList;
    subsidaryStaticContent$: ObjectList;
  }> {
    const mainStaticContent$: Observable<ObjectList> = this.http.get<ObjectList>(
      this.apiService.mainURL
    );
    const companyStaticContent$ = this.http.get<ObjectList>(
      this.apiService.companyURL
    );
    const subsidaryStaticContent$ = this.http.get<ObjectList>(
      this.apiService.subsiderayURL
    );

    return forkJoin({
      mainStaticContent$,
      companyStaticContent$,
      subsidaryStaticContent$,
    });
  }

我无法在 Angular 解析器服务中获取此数据,我需要在其中执行一些逻辑,然后 return 最终 ObjectList。请查看我下面的代码并提出建议。我是 rxJS 的新手,无法解决这个问题

export class DataResolverService implements Resolve<ObjectList> {
  constructor(private dataService: DataService) {}

  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot
  ):
    | ObjectList
    | import('rxjs').Observable<ObjectList>
    | Promise<ObjectList> {
      

    return this.dataService.getStaticContent$().pipe(
      tap(
        ([
          mainStaticContent: any,
          companyStaticContent,
          subsidaryStaticContent,
        ]) => {
          // perform merge opration
          // then return ObjectList
          return objectList;
        }
      )
    );
  }
}
  • 如果你发送forkJoin一个对象,那么你会在return中得到一个对象。不是数组。你在你的方法签名中得到了这个权利,但在你的用法中却没有

  • Tap return与它接收的流相同。您传递的函数 tap 应具有 return 类型的 void,因此任何 return 都将被忽略。

    return this.dataService.getStaticContent$().pipe(
      tap(
        ({ // <- Object not array
          mainStaticContent$,
          companyStaticContent$,
          subsidaryStaticContent$,
        }) => {
          // perform merge opration
          // then return ObjectList
          return objectList; // <- Tap ignores this
        }
      )
    );