gpt4 book ai didi

angular - 如何摆脱 Angular 6 服务中的冗余请求?

转载 作者:行者123 更新时间:2023-12-04 16:11:07 26 4
gpt4 key购买 nike

我的代码中有 3 个独立的位置调用 VerificationService 方法 getOrganizationView()

getOrganizationView(): Observable<any> {
return this.httpClient.http.post(...)
}

第一名是主要服务:

@Injectable()
export class Principal {
constructor(private verificationService: VerificationService) {}
identity(force?: boolean): Promise<any> {
return this.verificationService.getOrganizationView().toPromise().then((response ) => {
...
})
}
}

还有一个名为 LinkAccessService 的服务,它执行相同的Principal,但这不是重点

还有一个地方是组件:

export class VerificationComponent implements OnInit {
constructor(private verificationService: VerificationService) {
}

ngOnInit() {
this.verificationService.getOrganizationView()
.subscribe((data: VerificationView) => {
...
});
}
}

在加载应用程序时,我有 3 个调用,而不是单个请求,但这些实体绝对独立,我无法共享数据,例如组件指令之间的数据等等......

传统上 Angular 2+ 是如何解决这样的问题的?我的意思不是明确的答案代码,我的意思是想法。

最佳答案

缓存数据的最简单方法是使用 shareReplay rxjs 运算符:

import { shareReplay } from 'rxjs/operators';

@Injectable()
export class VerificationService {
organizationViewCache$: Observable<any>;

getOrganizationView() {
if (!this.organizationViewCache$) {
this.organizationViewCache$ = this.http.get(...).pipe(shareReplay(1));
}

return this.organizationViewCache$;
}
}

另请参阅:

关于angular - 如何摆脱 Angular 6 服务中的冗余请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53729362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com