如何在 switchOperator 中调用 forkJoin?

问题描述 投票:0回答:1

我曾试着在switchOperator中调用forkJoin。switchMap:

this.route.params.pipe(
  pluck('cadnum'),
  tap((cadnum) => {
    this.r1.repositoryModel.findallversionbycadnum.model.cadnum = cadnum;
    this.r2.repositoryModel.findallversionbycadnum.model.cadnum = cadnum;
    this.r3.repositoryModel.findallversionbycadnum.model.cadnum = cadnum;
  }),
  switchMap(() => forkJoin(
    egrn.parcels.versions.load(),
    egrn.premisses.versions.load(),
    egrn.rights.versions.load()).pipe(
      tap(([res1, res2, res3]) => {
        egrn.parcels.versions.set(res1);
        egrn.premisses.versions.set(res2);
        egrn.rights.versions.set(res3);
      }),
      catchError((error) => of(error)),
    ),
  ),
)).subscribe((response) => {
  console.log(response);
});

但它不工作,如何调用 forkJoin 里面 switchMap?

typescript rxjs rxjs5
1个回答
0
投票

将forkJoin的结果全部发出去。egrn.parcels.versions.load(), egrn.premisses.versions.load(), egrn.rights.versions.load() 必须要完整。

你可以尝试切换 forkJoincombineLatest 或在第一次发射后用以下方法完成流式传输 take(1)例如: egrn.parcels.versions.load().pipe(take(1))

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.