【问题标题】:How can I implement caching in angularJs factory?如何在 angularJs 工厂中实现缓存?
【发布时间】:2021-01-13 05:57:10
【问题描述】:

不使用cacheService如何在angularJs工厂实现缓存?

【问题讨论】:

  • 请告诉我们您到目前为止所做的尝试以及您的问题所在。

标签: angularjs factory angularjs-factory


【解决方案1】:

下面是不使用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);
                    }
                });
            }

        }
    
    }
})();

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    相关资源
    最近更新 更多