首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在AngularJS中取消$http请求?

如何在AngularJS中取消$http请求?
EN

Stack Overflow用户
提问于 2012-12-18 15:12:50
回答 7查看 123.9K关注 0票数 192

给定AngularJS中的Ajax请求

$http.get("/backend/").success(callback);

如果发起另一个请求,最有效的方法是取消该请求(例如,相同的后台,不同的参数)。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-06-27 03:00:39

这个特性是通过一个added to the 1.1.5 release参数超时的:

var canceler = $q.defer();
$http.get('/someUrl', {timeout: canceler.promise}).success(successCallback);
// later...
canceler.resolve();  // Aborts the $http request if it isn't finished.
票数 329
EN

Stack Overflow用户

发布于 2012-12-31 00:35:04

当前版本的AngularJS不支持取消使用$http发出的请求。有一个pull request opened可以添加这个功能,但是这个PR还没有被审查,所以还不清楚它是否会成为AngularJS的核心。

票数 9
EN

Stack Overflow用户

发布于 2015-07-01 15:33:06

如果你想用ui- stateChangeStart取消挂起的请求,你可以使用如下命令:

//服务中

                var deferred = $q.defer();
                var scope = this;
                $http.get(URL, {timeout : deferred.promise, cancel : deferred}).success(function(data){
                    //do something
                    deferred.resolve(dataUsage);
                }).error(function(){
                    deferred.reject();
                });
                return deferred.promise;

//在UIrouter配置中

$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
    //To cancel pending request when change state
       angular.forEach($http.pendingRequests, function(request) {
          if (request.cancel && request.timeout) {
             request.cancel.resolve();
          }
       });
    });
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13928057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档