给定AngularJS中的Ajax请求
$http.get("/backend/").success(callback);
如果发起另一个请求,最有效的方法是取消该请求(例如,相同的后台,不同的参数)。
发布于 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.
发布于 2012-12-31 00:35:04
当前版本的AngularJS不支持取消使用$http
发出的请求。有一个pull request opened可以添加这个功能,但是这个PR还没有被审查,所以还不清楚它是否会成为AngularJS的核心。
发布于 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();
}
});
});
https://stackoverflow.com/questions/13928057
复制相似问题