angularjs中的拦截器会拦截哪些请求

 我来答
mk...u@163.com
2017-10-24 · TA获得超过196个赞
知道小有建树答主
回答量:197
采纳率:50%
帮助的人:161万
展开全部
在Angular项目中,会有很多需要用户点击操作的地方,如果用户点击过快会产生多次相同请求,会吃服务器带宽,如果这是其他涉及钱有关的操作,这会产生一个致命的问题。对于这个问题,我想到了两种解决方案:  
1. 比如 在点击一个按钮操作的时候,我们通过将这个按钮 disabled 属性设置为 true ,当请求结束后,再设置为 false ,

代码:    

html: 

1

<div class="btn" ng-click="login()" ng-disabled="is_click">登录</div>

Js:  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

$scope.login = function(){
//将按钮置为不可点击状态
is_click = true;

//执行http请求操作
$http({
method : method,
params : params,
url : Config.BASE_URL + url
})
.then(function(){
//请求成功,将按钮置为可点击状态
is_click = false;
})
}

如果我有很多这样的操作,就需要写很多相同的代码。

AngularJs提供了一个拦截器,每次请求在http时,会先到拦截器中。所以,我们可以在拦截器中采取处理:

1.首先定义一个参数如:is_click, 在需要处理这个操作的地方通过附加这个参数,这样可以让我们去判断这个操作需不需要去检测

2.如果有,则进行检测,是否在一秒之内有相同请求(method、url、参数全相同视为相同请求)

3.如果没有,则添加到缓存中,如果有,则取消操作
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式