如何返回一个承诺,并在不使用$ timeout的情况下拒绝承诺

时间:2014-11-25 02:04:20

标签: angularjs

我在需要返回承诺的地方,否则将由服务器http请求返回,我需要拒绝它,所以我不必不必要地点击服务器。我一直试图制造并退回被拒绝的承诺,例如:

var promise = $q.defer().promise;
return promise.reject( value ); // doesn't work

return $q.reject(); // also doesn't work

我似乎无法弄清楚如何返回被拒绝的承诺,以便我可以保存服务器电话,但是我在某个地方要么返回已被拒绝的承诺,要么服务器调用。我在两者之间,我不在调用调用的原始子指令中,并且孩子无法进行父指令中可能的比较。无论如何没有$ timeout会这样做吗?

1 个答案:

答案 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;
&#13;
&#13;

deffered api具有拒绝/解析方法,其中promise api具有用于注册回调方法的方法