Javascript 在angularjs中,当调用请求的控制器失去其作用域时,如何中止http请求
我在angularjs中创建了一个使用ng视图的应用程序。由route provider的hep在ng视图中加载四个不同的模块。 在每个模块中,我以以下方式发送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
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请求的跟踪