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);
    
    
}