我在需要返回承诺的地方,否则将由服务器http请求返回,我需要拒绝它,所以我不必不必要地点击服务器。我一直试图制造并退回被拒绝的承诺,例如:
var promise = $q.defer().promise;
return promise.reject( value ); // doesn't work
或
return $q.reject(); // also doesn't work
我似乎无法弄清楚如何返回被拒绝的承诺,以便我可以保存服务器电话,但是我在某个地方要么返回已被拒绝的承诺,要么服务器调用。我在两者之间,我不在调用调用的原始子指令中,并且孩子无法进行父指令中可能的比较。无论如何没有$ timeout会这样做吗?
答案 0 :(得分:2)
我认为你在寻找的是
var app = angular.module('my-app', [], function() {
})
app.controller('AppController', ['$scope', '$q',
function($scope, $q) {
$scope.message = 'This is for testing';
function test() {
//create a deferred object
var deferred = $q.defer();
//reject the promise
deferred.reject(2);
//then return the promise
return deferred.promise;
}
test().then(function() {
$scope.message = 'Resolved';
}, function() {
$scope.message = 'Rejected';
})
}
])

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="my-app" ng-controller="AppController">
{{message}}
</div>
&#13;
deffered api具有拒绝/解析方法,其中promise api具有用于注册回调方法的方法