中止AngularJS中的ajax请求

时间:2015-01-02 11:29:31

标签: javascript ajax angularjs abort

如何在ajax中中止待处理的AngularJS个请求?我正在使用Service进行ajax调用,并且如果在同一路由上创建了一个新请求,则要中止所有挂起的请求。

这是我的服务:

myService.service('angService', function($http){

  this.getfromRemote=function(url){
    return $http.get(location+'/dev/apiv-1-0-2/'+url);
  }
});

我在这里打电话给服务。在下次运行之前,我想中止待处理的ajax请求。

angService.getfromRemote('paymentStatement/'+$scope.username)
                            .success(function(response){

})

1 个答案:

答案 0 :(得分:0)

要中止待处理的$http请求,您可以将承诺传递给$http请求的超时属性,并调用resolve以中止请求。

myService.service('angService',function($http, $q){
    var pending = false;
    var deferred = $q.defer();

    this.getfromRemote=function(url){
        if (pending) {
           deferred.resolve();
           deferred = $q.defer();
        }
        pending = true;
        return $http({ 
           method: 'GET', 
           url: location+'/dev/apiv-1-0-2/'+url,
           timeout = deferred.promise;
        }).then(function(result) {
           pending = false;
           deferred = $q.defer();
           return result;
        }, function(result) {
           pending = false;
           deferred = $q.defer();
           return result;
        });


    }

});