我正在努力使用 $cacheFactory,我正在尝试缓存一个简单的 GET 请求,然后从控制器中检索它 - 但我不明白我该怎么做。
这里是服务
app.service('usersService', function ($http, $cacheFactory, $q) {
var cache = $cacheFactory("todoList");
this.getToDos = function() {
var deferred = $q.defer();
var req = {
method: 'GET',
url:'https://jsonplaceholder.typicode.com/todos',
cache: true
};
var data = cache.get("todoList");
if (!data) {
$http(req).then(function(payload) {
deferred.resolve(payload.data);
cache.put("todoList", payload.data);
}, function(reason) {
deferred.reject(reason);
});
} else {
return data;
}
return deferred.promise;
};
})
这是控制器
app.controller('usersListController', function ($scope, usersService, BookService, $cacheFactory) {
function init() {
$scope.refresh();
usersService.getToDos();
var sharedCache = $cacheFactory.get('todoList'); // getting undefined
console.log(sharedCache);
}
init();
});
我猜问题是 GET 请求是异步的 - 所以当控制器执行 init 函数时 - GET 不会“得到”任何东西.....