Javascript 在angularjs中,当调用请求的控制器失去其作用域时,如何中止http请求

Javascript 在angularjs中,当调用请求的控制器失去其作用域时,如何中止http请求,javascript,angularjs,http,Javascript,Angularjs,Http,我在angularjs中创建了一个使用ng视图的应用程序。由route provider的hep在ng视图中加载四个不同的模块。 在每个模块中,我以以下方式发送http请求:- var requestManager = { "locations": {}, "employees": {}, "items": {}, "templates": {} }; sendRequestToServer = function (reqObj) { var reqObj

我在angularjs中创建了一个使用ng视图的应用程序。由route provider的hep在ng视图中加载四个不同的模块。 在每个模块中,我以以下方式发送http请求:-

var requestManager = {
    "locations": {},
    "employees": {},
    "items": {},
    "templates": {}
};
sendRequestToServer = function (reqObj) {
    var reqObj = reqObj,
        httpObj = {},
        defer = $q.defer();
    httpObj = {
        method: reqObj.method,
        url: baseUrl + reqObj.url,
        timeout: 90000
    };
    if (reqObj.method == 'GET') {
        httpObj['params'] = reqObj.data;
        if (reqObj.uniqueId) {
            httpObj['headers'] = {
                'uniqueId': uniqueId
            }
        }
    } else if (reqObj.method == 'POST' || reqObj.method == 'PUT') {
        httpObj['headers'] = {
            'Content-Type': 'application/x-www-form-urlencoded'
        };
        httpObj['data'] = reqObj.data;
    }
    requestManager[reqObj.moduleName][reqObj.requestName] = $http(httpObj).success(function (data, status, headers, config) {
        var dataObj = {
            data: data,
            status: status,
            headers: headers,
            config: config
        };
        defer.resolve(dataObj);
    })
        .error(function (data, status, headers, config) {
            var dataObj = {
                data: data,
                status: status,
                headers: headers,
                config: config
            };
            defer.reject(dataObj);
        });
    return defer.promise;
}
现在我的要求是:-当路由从一个模块更改到另一个模块时,我想中止服务器通信中间的请求。 为此,我正在收听销毁事件:-

$rootScope.$on('destroyModule', function(event, moduleName) {

    var requests = requestManager[moduleName]
        , defer = $q.defer()
        , index
        , req;
    for(req in requests){

    //Want abort the request
        defer.reject(requests[req]);

    }
})
但是它不起作用。。我认为我所做的是错的。在这个话题上有人能帮忙吗??
提前感谢您

销毁事件不会在$rootScope上触发,如果您还有其他作用域,您也可以监听(可能在视图控制器中?),您可以这样连接:

$scope.$on("$destroy", function(){ ... });
另一方面,如果您只想检测位置何时更改,则可以执行以下操作:

$rootScope.$on("$locationChangeStart", function(){ ... });

请不要拒绝那些不是错误的东西。总是拒绝一个错误,因为它会给你堆栈的痕迹。此外,考虑改写你的代码,以避免我阅读的GITHUB链接,你提供。但是我的问题是,我怎样才能达到我的要求,中止我已经发送的请求..你能帮我一下吗?我怎样才能得到在作用域被破坏之前已经发送的http请求的跟踪