我有一个从服务器获取与当前登录用户相关的数据的服务,该服务在内部缓存返回的用户对象。用户服务:
var appCache = $cacheFactory.get('appCache');
var userInfoFromCache = appCache.get('userInfo');
if (userInfoFromCache) {
$log.debug("User info cache hit");
deferred.resolve(userInfoFromCache);
} else{
$log.debug("User info cache miss");
//do work and get data from server
appCache.put('userInfo', userInfo);
}
服务很好。我从多个加载位置(例如顶部导航和主视图内部)调用用户服务。我还在 app.js 的运行部分调用该服务:
.run(function(userService) {
userService.getUser();
})
由于我一次从多个地方调用该服务,我最终会调用多个服务器。有没有一种方法可以设置代码锁定,以便对 userService 的后续调用由缓存提供服务?