gpt4 book ai didi

angular - 如何使用 shareReplay 缓存带有请求参数的 HTTP 响应

转载 作者:行者123 更新时间:2023-12-05 01:36:26 26 4
gpt4 key购买 nike

我有一个场景,比如我需要在单击文件时获取文件内容。我想用shareReplay()缓存文件内容API,如何实现?

fileService.getContent 是一个 API 服务,它将使用 params(repository_id, filePath);

获取内容

问题:

  • 我应该在哪里使用 shareReplay() pipe?内部 API 服务?或者我在下面写的地方。
  • 以下代码未按预期工作。该 API 将被多次触发。如何使用 shareReplay() 缓存 API 以仅调用一次。

组件

fileOpened$ = new Subject();
...

this.fileOpened$.pipe(
switchMap(file => this.fileService.getContent(this.repository_id, file.filePath)),
shareReplay(1)
);

服务:

getContent(repoId: string, path: string): Observable<string> {
return this.http.get<string>(
`/api/xxx/${repoId}/files/${decodeURIComponent(path)}`,
{
responseType: 'text' as 'json'
});
}

最佳答案

我会在服务中添加 shareReplay 代码。由于这些参数,您可以创建一个缓存 ObservablesMap

这里是 stackblitz我创建是为了演示。

关于angular - 如何使用 shareReplay 缓存带有请求参数的 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61998602/

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