有人可以帮我解决这个问题吗?
我有一项服务,该服务通过httpClient.get()
调用从服务器获取一些数据。
我还有一个使用此服务并显示此数据具体信息的组件。 问题是我需要在同一页面/视图中使该组件3次或4次,以显示来自同一调用的不同具体数据,并且由于应用程序体系结构,该组件必须由谁来进行调用。
如何检测到该呼叫已经执行并重用?
我当时在考虑RxJS运算符share
甚至是shareReplay
,但在说明的情况下,我不知道如何清楚地使用它。
谢谢。
答案 0 :(得分:2)
发出一个Http
请求并处理缓存/存储的数据。使用以下方法
export class SharedService {
private data$: Observable<User>;
private getUser(): void {
this.data$ = this.http
.get<User>(BACKENDPATH).pipe(shareReplay(1));
}
getData(): Observable<User> {
if (!this.data$) {
this.getUser();
}
return this.data$;
}
}
组件:
this.service.getData().subscribe(...)