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
}
)
);
我需要获取 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
}
)
);