2015-08-09 185 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調用中添加一些邏輯,特別是一旦您發出一個請求不再發出。等待一個請求返回,然後繼續計算。