我曾试着在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
?
将forkJoin的结果全部发出去。egrn.parcels.versions.load(), egrn.premisses.versions.load(), egrn.rights.versions.load()
必须要完整。
你可以尝试切换 forkJoin
到 combineLatest
或在第一次发射后用以下方法完成流式传输 take(1)
例如: egrn.parcels.versions.load().pipe(take(1))