2015-08-09 111 views
0

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

我的问题是工厂方法需要收集规则来进行计算。我从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调用中添加一些逻辑,特别是一旦您发出一个请求不再发出。等待一个请求返回,然后继续计算。