【问题标题】:Abort pending ajax request in AngularJS在 AngularJS 中中止挂起的 ajax 请求
【发布时间】:2015-01-02 11:29:31
【问题描述】:

如何中止 AngularJS 中待处理的 ajax 请求?我正在使用 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){

})

【问题讨论】:

标签: javascript ajax angularjs abort


【解决方案1】:

要中止待处理的$http 请求,您可以将promise 传递给$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;
        });


    }

});

【讨论】:

    猜你喜欢
    • 2015-03-16
    • 2014-06-08
    • 2012-02-02
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2017-06-24
    相关资源
    最近更新 更多