本文介绍了停止angularjs拦截请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我怎么能停在Angularjs拦截的请求。
有没有办法做到这一点?
我试图用承诺和发送拒绝决心,而不是!
.factory('connectionInterceptor',['$ Q','$超时',
功能($ Q $超时){
VAR connectionInterceptor = {
要求:功能(配置){
变种Q = $ q.defer();
$超时(函数(){
q.reject();
},2000)
返回q.promise;
//返回配置;
}
}
返回connectionInterceptor;
}
])
的.config(函数($ httpProvider){
$ httpProvider.interceptors.push('connectionInterceptor');
});
解决方案
在$ HTTP服务有一个选项
暂停以完成这项工作。
你可以这样做:
angular.module('对myApp')
.factory('httpInterceptor',['$ Q','$位置',函数($ Q $位置){
变种消除= $ q.defer();
返回{
请求:功能(配置){
//承诺解决时应中止请求。
config.timeout = canceller.promise;
返回配置;
},
回应:功能(响应){
返回响应;
},
responseError':函数(拒绝){
如果(rejection.status === 401){
canceller.resolve('擅自');
$ location.url('/用户/登入');
}
如果(rejection.status === 403){
canceller.resolve('故宫');
$ location.url('/');
}
返回$ q.reject(拒绝);
} };
}
])
//的Http Intercpetor检查XHR请求身份验证失败
的.config(['$ httpProvider',函数($ httpProvider){
$ httpProvider.interceptors.push('httpInterceptor');
}]);
How can I stop a request in Angularjs interceptor.
Is there any way to do that?
I tried using promises and sending reject instead of resolve !
.factory('connectionInterceptor', ['$q', '$timeout',
function($q, $timeout) {
var connectionInterceptor = {
request: function(config) {
var q = $q.defer();
$timeout(function() {
q.reject();
}, 2000)
return q.promise;
// return config;
}
}
return connectionInterceptor;
}
])
.config(function($httpProvider) {
$httpProvider.interceptors.push('connectionInterceptor');
});
解决方案
The $http service has an optionstimeout to do the job.you can do like:
angular.module('myApp')
.factory('httpInterceptor', ['$q', '$location',function ($q, $location) {
var canceller = $q.defer();
return {
'request': function(config) {
// promise that should abort the request when resolved.
config.timeout = canceller.promise;
return config;
},
'response': function(response) {
return response;
},
'responseError': function(rejection) {
if (rejection.status === 401) {
canceller.resolve('Unauthorized');
$location.url('/user/signin');
}
if (rejection.status === 403) {
canceller.resolve('Forbidden');
$location.url('/');
}
return $q.reject(rejection);
}
};
}
])
//Http Intercpetor to check auth failures for xhr requests
.config(['$httpProvider',function($httpProvider) {
$httpProvider.interceptors.push('httpInterceptor');
}]);
这篇关于停止angularjs拦截请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!