- 前后端的交互有网络延时,有的时候数据迟迟未来,用户就反复点击按钮发送请求,明明用户只需要一次请求就够了,点了那么多下,服务器要返回那么多次请求,怎么办呢?
- 可以在前端的JS中加一个数据锁。
- 方法如下:
<script>
var dataLock = true; //初始的数据锁是打开的
btn.addEventListener("click", function() {
if (!dataLock) { //看看数据锁,如果是锁上的,这次点击就没用,退出函数。
return; //如果是打开状态,就执行下面的代码
}
dataLock = false; //先把数据锁锁上,然后去发送请求
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
dataLock = true; //数据到来后,打开数据锁
}
}
})
</script>