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。如果您在处理前解决了承诺,那么它也会调用您的处理程序。