gpt4 book ai didi

javascript - 在 Angular 中使用 shareReplay(1) - 仍然调用 http 请求?

转载 作者:数据小太阳 更新时间:2023-10-29 05:51:14 26 4
gpt4 key购买 nike

我创建了一个演示 ( ng-run ),其中有一个调用 Http 请求的按钮。

单击按钮时,我调用此方法:

public getData(){
this._jokeService.getData().subscribe();
}

依次调用这个(从服务):

 public getData() {
return this.http.get(API_ENDPOINT).pipe(shareReplay(1))
}

问题是每次点击 - 我仍然看到发起了一个新的 http 请求:

enter image description here

问题:

为什么 shareReplay 不保留响应的最后一个值?
如何让我的代码仅调用一次 http 并为将来的订阅保留该值?

编辑:solution is here

最佳答案

如果每次都调用this.http.get(API_ENDPOINT).pipe(shareReplay(1)),每次都会触发http请求。如果你想做一次http调用并缓存数据,推荐如下。

您首先获取数据的可观察对象:

 ngOninit(){
this.data$ = this._jokeService.getData().pipe(shareReplay(1));
}

现在多次订阅:

 public getData(){
this.data$.subscribe();
}

您的服务:

public getData() {
return this.http.get(API_ENDPOINT)
}

关于javascript - 在 Angular 中使用 shareReplay(1) - 仍然调用 http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51044291/

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