Angularjs工厂方法实现

时间:2015-08-09 13:16:29

标签: angularjs

我正在写一个angularjs工厂来做一些计算。我把它命名为CalcEngineService这个工厂有一个方法,由控制器,指令使用。这种工厂方法被称为数百次。

我的问题是工厂方法需要收集规则来进行计算。我从http服务获得了这个规则集。当我使用http调用来获取规则时,我会看到数百个http调用并且性能受到影响。如何限制调用以获取规则集合一次,并确保对规则的任何更改也得到处理。

defaultRules = [];
function calculateDuedate(test) {

        getDefaultRules().then(function(rules){
       // DO calculations with rules and find the duedate and update test with duedate
});
        return test.dueDate;
    }

function getDefaultRules() {
        return $q(function (resolve, reject) {
            if (utility.isEmpty(defaultRules)) {
                rulesService.getDefaultRules().then(function (rules) {
                    defaultRules = rules.data;
                    resolve(defaultRules);
                });
            }
            else {
                resolve(defaultRules)
            }
        });
    }

我对angularjs相当新,并且不完全了解许多功能以充分利用。任何人都可以提出一个很好的处理方法吗?

1 个答案:

答案 0 :(得分:0)

你需要在你的$ http电话周围添加一些逻辑,特别是一旦你提出一个请求就不再做了。等待一个请求返回,然后继续计算。