Cancelling request in $http
Demo on cancelling request in $http
HTML
<script src="http://code.angularjs.org/1.2.0-rc.3/angular.min.js"></script>
<div ng-app="myapp">
<div ng-controller="Ctrl">
<p>Look at console.</p>
</div>
</div>
JavaScript
var app = angular.module('myapp', []);
function Ctrl($rootScope, $scope, $http, $q, $timeout) {
var canceler = $q.defer();
console.log("Calling...");
$http.get("/echo/json", {
//Will return data after 5 seconds passed
data: {json:{id:"123"}, delay:5},
timeout: canceler.promise
}).success(function (results) {
console.log("Success");
console.log(results);
}).
error(function (result) {
console.log("Error");
console.log(result);
});
$timeout(function () {
console.log("1 second passed");
// now, cancel it (before it may come back with data)
$rootScope.$apply(function() {
console.log("Canceling..");
canceler.resolve();
});
},1000);
}