3-6 如何防止多次点击-重复请求

<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button id="btn">按钮</button>
<button id="btn2">按钮2</button>
<script>
// 防抖
const btn = document.querySelector('#btn');
const fn = defa(ad);
btn.addEventListener('click', fn)
function defa(fn, time = 1000) {
let timeId = null;
return function() {
const self = this;
const args = arguments;
if(timeId){
clearTimeout(timeId);
}
timeId = setTimeout(() => {
if(fn instanceof Function){
fn.apply(self, ...args)
}
}, time)
}
}
function ad() {
console.log('ok')
}
</script>
<script>
// 通过按钮的禁用属性
const ann = document.querySelector('#btn2');
const func = defc(ass)
ann.addEventListener('click', func)
function defc(fn, time=1000) {
return function() {
const self = this;
const args = arguments;
const dis = this.disabled;
if(dis) return;
self.disabled = true;
setTimeout(() => {
fn.apply(self, ...args);
self.disabled = false;
}, time)
}
}
function ass() {
console.log('oks')
}
</script>
<script>
// 根据网络情况loading 的来限制用户的点击,这只是接口响应慢的情况下
</script>
</body>
</html>

本文作者:林见夕

本文链接:https://www.cnblogs.com/ifon/p/15971096.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   林见夕  阅读(206)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.