重复的ajax请求让人很受伤
重复的ajax请求让人很受伤
重复的ajax请求一波又一波的袭来,服务器正躲在角落里瑟瑟发抖,它内心是崩溃的,这算是遭了罪了, 前端小王子为啥没有做好限制和封锁,真是伤不起啊,哎,不如意事常八九,能与人言无二三...... 以上场景是我们平时在开发中稍微不注意就会重现的,也因此伤了多少服务器的心;我们作为前端开发人员,应该正视而且重视这个问题。在这里,给大家提供以下几种解决方案:
1
UI层面的拦截
1
UI层面的拦截
1.$("#submit").prop("disabled",true); //按钮禁用
2.showLoading() //显示动画
3.$.ajax({
...
timeout: 4000, // 设置超时时间
complete:function(){
hideLoading() //隐藏动画
}
})
2
JS层面的封锁
(1) 暴力点击
2
JS层面的封锁
2
JS层面的封锁
obtn.onclick = (function(){
var timer;
return function(){
if(timer){
clearTimeout(timer)
}
timer= setTimeout(() => {
console.log("ajax发送; 查询结果")
}, 500)
}
})()
(2)多tab页快速切换
var CancelToken = axios.CancelToken;
var source = CancelToken.source();
axios.get('/user/12345', {
cancelToken: source.token
}).catch(function(thrown) {
if (axios.isCancel(thrown)) {
console.log('Request canceled', thrown.message);
} else {
// handle error
}
});
// cancel the request (the message parameter is optional)
source.cancel('Operation canceled by the user.');
不同的使用场景,我们可以灵活的组合以上的解决方案, 不知道这样做的话,是否能挽回服务器的心,我又想起了夕阳下的奔跑,那是我与服务器美好邂逅,也是我们逝去的青春......