在 AngularJS 中中止挂起的 ajax 请求

Abort pending ajax request in AngularJS

本文关键字:ajax 请求 AngularJS 挂起      更新时间:2023-09-26

如何在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){
})

若要中止挂起的$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;
        });

    }
});