假设我有一个调用外部API的用户服务
为了避免两次调用此API(例如,一次用于父页面,然后再次用于需要它的任何子元素)。
将数据存储在服务中是否可以?
e.g。 myService.userName
,myService.userID
等
我已经读到将数据存储在服务中的不良做法; 这就是为什么我要问
注意:我不需要数据持久化。它应该在页面加载时刷新。
答案 0 :(得分:1)
我认为在服务中缓存数据有几个优点,但你必须知道实际发生了什么。
以下是有关服务的一些事实和信息:
在某些情况下,您可能需要注意力度:
我认为如果服务具有清晰易懂的API并且不会尝试做太多,那么服务就很好。如果它可以被几个组件重用,这似乎符合您的要求。
请注意,其中一些内容是从我的answer复制到有关服务与指令的其他帖子中的。也许你可以在那里找到更多的信息。
答案 1 :(得分:0)
您可以在服务中缓存您的数据...但您应该使用服务器&客户端检查所以没有人会编辑它并将更改那里的信息。
每当你进入一个网站时,作为一个客户,你应该回答一次,这个问题不会发生很大变化。例如,如果用户详细信息在下一分钟内没有发生变化,则应该发出一次。
将信息存储在服务中是一种常见的选择,另一种选择是本地存储和/或cookie,这将在您下次进入时有所帮助,如果它再次变化不大。
答案 2 :(得分:0)
服务中的缓存没有任何问题(它们是单例,通常用于在控制器之间共享状态。)如果您使用$ resource从您的服务访问API,则一个选项是只需打开$ resource的内置缓存,就像这样:
var myResource = $resource(baseUrl + '/something/:id', {id: '@id'}, {
'get': { method:'GET', cache: true},
});