Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何使用$q解析和拒绝_Angularjs - Fatal编程技术网

Angularjs 如何使用$q解析和拒绝

Angularjs 如何使用$q解析和拒绝,angularjs,Angularjs,我有一个角度服务与以下签名 function test(param1, param2, param3) { var deferred = $q.defer(); if(!param1 || !param2) { deferred.reject(); return deferred; } else { deferred.resolve(); } var helper1 = function(){}; var helpe

我有一个角度服务与以下签名

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(){ });

未执行已解决或已拒绝的。我做错什么了吗?

您需要从deffer object返回承诺

 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;
    }

但它仍然没有在内部调用resolve或reject处理程序。您正在处理前调用reject或resolve。当你有一些事情在计时,或者一些服务器调用时,使用promise。在你的情况下,理想情况下没有必要做出承诺。但是如果已经解决或拒绝了,那么仍然应该执行承诺,对吗?很抱歉,这是我的错误。谢谢现在整个事情都在按预期进行。您的示例将起作用,只需返回promise而不是deffer object。如果您在处理前解决了承诺,那么它也会调用您的处理程序。