2015-01-09 23 views
0

我有一個角度的服務與下面的簽名

function test(param1, param2, param3) { 
    var deferred = $q.defer(); 
    if(!param1 || !param2) { 
     deferred.reject(); 
     return deferred; 
    } else { 
     deferred.resolve(); 
    } 

    var helper1 = function(){}; 
    var helper2 = function(){}; 

    return deferred; 
} 

而且調用時​​

test().then(function(){ }, function(){ }); 

解決或拒絕不執行。我在做什麼不對?

回答

2

您需要從deffer對象返回承諾。

function test(param1, param2, param3) { 
     var deferred = $q.defer(); 
     if(!param1 || !param2) { 
      deferred.reject(); 
     } else { 
      deferred.resolve(); 
     } 

     var helper1 = function(){}; 
     var helper2 = function(){}; 

     return deferred.promise; 
    } 
+0

仍然沒有在那裏調用解析或拒絕處理程序。 – redV

+0

您在處理之前致電拒絕或解決。當你有計時器或某些服務器調用時使用諾言。在你的情況理想情況下,沒有必要創造承諾.. – dhavalcengg

+0

但是,如果已經解決或拒絕,那麼應該執行仍然是正確的? – redV