【发布时间】:2021-01-13 05:57:10
【问题描述】:
不使用cacheService如何在angularJs工厂实现缓存?
【问题讨论】:
-
请告诉我们您到目前为止所做的尝试以及您的问题所在。
标签: angularjs factory angularjs-factory
不使用cacheService如何在angularJs工厂实现缓存?
【问题讨论】:
标签: angularjs factory angularjs-factory
下面是不使用cachService在angularjs中缓存的实现:
angular.module('as.admin')
.factory('userAnalyticsData',userAnalyticsData);
userAnalyticsData.$inject = ['$http'];
function userAnalyticsData($http) {
var service = {
getData: getData
};
var analyticsData = {};
var called=false;
var unCalledCallbacks=[];
return service;
function getData(data,callback) {
if(!data){
if(callback) callback(false); return;
}
if(called==true){
if(!angular.equals(analyticsData, {}) && unCalledCallbacks.length==0){
if(callback)callback(analyticsData); return;
}
if(callback){
unCalledCallbacks.push(callback);
}
}
if(!called){
called=true;
$http({
method: 'POST',
url : './admin/analytics',
data:data
}).then(function(res){
if(res && res.data && res.data.success==1){
analyticsData=res.data;
if(callback) callback(analyticsData);
if(unCalledCallbacks){
var i=0;
while (i < unCalledCallbacks.length) {
if (unCalledCallbacks[i]) {
unCalledCallbacks[i](analyticsData);
unCalledCallbacks.splice(i, 1);
} else {
++i;
}
}
}
}
else{
if(callback) callback(false);
}
});
}
}
}
})();
【讨论】: