在 AngularJS 中中止挂起的 ajax 请求
Posted
技术标签:
【中文标题】在 AngularJS 中中止挂起的 ajax 请求【英文标题】:Abort pending ajax request in AngularJS 【发布时间】: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)
)
【问题讨论】:
How to cancel an $http request in AngularJS?的可能重复 它不适合我 【参考方案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;
);
);
【讨论】:
以上是关于在 AngularJS 中中止挂起的 ajax 请求的主要内容,如果未能解决你的问题,请参考以下文章
Chrome 中 JQuery 停止和挂起的 ajax 请求