首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript防抖与节流

防抖:事件持续触发,但只有当事件停止触发后n秒才执行函数。

节流:事件持续触发时,每n秒执行一次函数。

防抖

const debounce = function (func, delay, immediate = false) { let timer, result, callNow = true; const debounced = function () { const context = this; const args = arguments; if (timer) clearTimeout(timer); if (immediate) { if(callNow) result = func.apply(context, args); callNow = false; timer = setTimeout(() => { callNow = true; // 过n秒后才能再次触发函数执行。 }, delay) } else { timer = setTimeout(() => { func.apply(context, args); }, delay) } return result; }; debounced.cancel = function(){ clearTimeout(timer); timer = null; }}

节流

const throttle = function(func, delay) { let timer, prev = 0; return function(){ const context = this; const args = arguments; const now = +new Date(); const remaining = delay - (now - prev); if (remaining prev = now; func.apply(context, args); } else if(!timer) { timer = setTimeout(() => { prev = +new Date(); timer = null; func.apply(context, args); }, remaining) } }}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200601A0Q0BN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券