我正在尝试为http请求做一个缓存工厂,所以它不会使服务器为同一请求做很多工作。但似乎我使用推迟的“吞下”数据的方式,我不知道为什么。Angularjs Factory延迟的数据消失
控制台输出如下:
数据获取:
对象{状态: “OK”,数据:对象的errorMessage:空,异常:空}
成功
不确定
ImportFactory:
factory("importFactory", function ($http, $q, loggingService) {
return{
fetchedData: [],
cacheTransport: function (transportsId, data) {
this.fetchedData.push({"transportsId": transportsId, "data": data});
},
getImport: function (transportsId) {
var factory = this;
var deferred = $q.defer();
var preFetchedTransport = this.findTransport(transportsId);
if (preFetchedTransport === null) {
console.log('fetching from backend');
return $http.post("/import/create/" + transportsId).then(function (data) {
console.log('data fetched:');
console.log(data);
factory.cacheTransport(transportsId, data);
deferred.resolve(data);
});
}
preFetchedTransport = deferred.promise;
return preFetchedTransport;
},
findTransport: function (transportsId) {
for (var i = 0; i < this.fetchedData.length; i++) {
var transportObj = this.fetchedData[i];
if (transportObj.transportsId === transportsId) {
return transportObj.data;
}
}
return null;
}
};
});
控制器
.controller('ImportController', function ($scope, $routeParams, importFactory){
$scope.transportId = $routeParams.id;
importFactory.getImport($scope.transportId).then(function (successData) {
console.log('success');
console.log(successData);
}, function (errorData) {
console.log('error');
console.log(errorData);
});
为什么不直接使用$ http的内置缓存,如$ http.post(url,{cache:true}) – 2015-03-19 12:25:48
因为我需要更新缓存。 – 2015-03-19 12:27:46