防抖

博客 动态
0 141
羽尘
羽尘 2022-05-07 16:58:54
悬赏:0 积分 收藏

防抖

函数防抖:短时间多次触发同一事件,只执行 最开始 或 最后 一次操作。

function debounce(func, ms = 1000) {  let timer;  return function(...args) {    console.log(args);    if (timer) {      clearTimeout(timer);    }    timer = setTimeout(() => {      func.apply(this, args);    }, ms);  };}const task = () => {console.log('run task')};const debounceTask = debounce(task, 1000);window.addEventListener('click', debounceTask);  // click 可以换成 scroll

 

 

 

对 debounce 函数返回的匿名函数中 args 参数(这里可忽略)的存在作出说明:
  const debounceTask = debounce(task, 1000) 其实返回的是匿名函数。

点击页面触发 window.addEventListener('click', debounceTask) 事件,debounceTask 会执行。

这里 debounceTask 没有传递参数,打印 args 会看到有个事件对象,这里的原因是因为:
  在浏览器中,如果函数执行没有传递参数,会默认有个浏览器事件对象作为参数,如监听的是点击 click 事件的话 args 就是 [PointerEvent]

 

 

 

将 click 换成 scroll,如果在函数不防抖,要执行很多次了~

 

posted @ 2022-05-07 16:26 し7709 阅读(0) 评论(0) 编辑 收藏 举报
回帖
    羽尘

    羽尘 (王者 段位)

    2335 积分 (2)粉丝 (11)源码

     

    温馨提示

    亦奇源码

    最新会员