JS:性能优化方案:防抖和节流

举报
彭世瑜 发表于 2021/08/14 00:01:18 2021/08/14
【摘要】 1、防抖函数 防抖用于减少函数请求次数,对于频繁的请求,只执行这些请求的最后一次。 /** * @param {function} func - 执行函数 * @param {number} wait - 等待时间 * @return {function} */ function debounce(func, wait = 300){ let timer...

1、防抖函数

防抖用于减少函数请求次数,对于频繁的请求,只执行这些请求的最后一次。

/**
 * @param {function} func - 执行函数
 * @param {number} wait - 等待时间
 * @return {function}
 */
function debounce(func, wait = 300){
  let timer = null;
  return function(){ if(timer !== null){ clearTimeout(timer); } timer = setTimeout(func.bind(this),wait);
  }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

应用示例

let scrollHandler = debounce(function(e){
  console.log('scroll')
}, 500)

window.onscroll = scrollHandler

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

2、节流函数

节流用于减少函数请求次数,与防抖不同,节流是在一段时间执行一次。

/**
 * @param {function} func - 执行函数
 * @param {number} delay - 延迟时间
 * @return {function}
 */
function throttle(func, delay){
  let timer = null
  return function(...arg){ if(!timer){ timer = setTimeout(()=>{ func.apply(this, arg) timer = null }, delay) }
  }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

使用示例

let scrollHandler = throttle(function(e){
  console.log(e)
}, 500)

window.onscroll = scrollHandler

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

参考
10个非常实用的JS工具函数

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/119608100

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。