js中的防抖、节流、点击事件回调
以前,贴吧骗赞有个说法,快速点击两次可以赞两下哦,这个情况倒是可以发生的,就是将点赞信息提交了多次。就算后端帮助判断了不能点赞多次,将错误信息返回前台,频繁提示“不能多次点赞”看起来也是很Low。我们可以根据需求来使用下面几种方式让效果、性能都能完美实现。
防抖的原理是在规定触发时间内,多次点击,都会重新刷新触发时间,直到触发时间完成回调才会触发。防抖的运用场景大多在搜索关联词匹配、window窗口的变化已经滚动条的滚动。
节流的原理是在规定时间内不管点击多少次都只会执行一次。而像我们提交信息的话,需要的是当后台返回信息后,我们做自己的逻辑判断。节流的运用场景在瀑布流更新列表信息、当然短时间内不能重复提交、点击事件也可以拿来使用。
防抖的核心实现代码如下:
1 //防抖 2 function debounce(fun, delay = 200) { 3 return function (args) { 4 //获取函数的作用域和变量 5 let that = this 6 let _args = args 7 //每次事件被触发,都会清除当前的timeer,然后重写设置超时调用 8 clearTimeout(fun.id) 9 fun.id = setTimeout(function () { 10 fun.call(that, _args) 11 }, delay) 12 } 13 }
节流的核心实现代码如下:
1 //节流 2 function throttle(fun, delay = 1000) { 3 let last, deferTimer; 4 return function (args) { 5 let that = this; 6 let _args = arguments; 7 8 let now = +new Date(); 9 if (last && now < last + delay) { 10 clearTimeout(deferTimer); 11 deferTimer = setTimeout(function () { 12 last = now; 13 fun.apply(that, _args); 14 }, delay) 15 } else { 16 last = now; 17 fun.apply(that, _args); 18 } 19 } 20 }
而点击期间不能再次点击,我们可以设置一个全局变量,用户点击后变量切换状态,该状态不能再次点击操作。
分类:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人