我正在写一个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相当新,并且不完全了解许多功能以充分利用。任何人都可以提出一个很好的处理方法吗?
答案 0 :(得分:0)
你需要在你的$ http电话周围添加一些逻辑,特别是一旦你提出一个请求就不再做了。等待一个请求返回,然后继续计算。