【发布时间】:2018-12-27 22:30:29
【问题描述】:
我有一个我想要缓存的用户列表,以便我的 Angular 5 应用程序中的不同组件不会访问 Web 服务,而是返回缓存的响应。为此,我执行了以下操作:
getAllUsers() {
return this.getUncachedUsersList().publishReplay().refCount();
}
getUncachedUsersList() {
return this.http.get('https://......');
}
在上面的代码sn-p中,我有两种方法。我在需要用户列表的所有组件中调用 getAllUsers,除非假设我正在添加一个用户,然后我需要一个更新的列表。在这种情况下,我会调用“getUncachedUsersList”来获取最新信息。
问题是,当我调用“getUncachedUsersList”时,我希望“getAllUsers”缓存新列表,但它返回的是在添加新用户之前缓存的相同旧列表。所以我想知道如何清除缓存的响应并保存从“getUncachedUsersList”获得的新响应,并在调用“getAllUsers”时返回新响应。
【问题讨论】:
-
在您的情况下,
getAllUsers()实际上并不是缓存数据。如果您调用该方法两次并同时订阅,您将看到 2 个网络调用被触发。您需要以某种方式存储Observable引用。顺便说一句,t7yang-s 的答案对你有用