移动端事件(五)—— 函数防抖和函数节流的封装

我们了解了函数防抖与函数节流的思路后,我们现在来将他们封装起来,提高代码复用性。

今天直接上菜

  cb 要处理防抖的函数
  time 默认的高频间隔时间
  isStart 是否在头部执行

函数防抖封装:调用debounce 函数,返回一个处理过防抖的函数

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> #box { width: 300px; height: 400px; background: red; } </style> </head> <body> <div id="box"></div> <script> function debounce(cb,delay = 200,isStart = false){ let timer = 0; let isFirst = true; //是否是第一次执行 return function(...arg){ clearTimeout(timer); if(isFirst&&isStart){ cb.apply(this,arg); isFirst = false; } timer = setTimeout(()=>{ (!isStart)&&cb.apply(this,arg); isFirst = true; },delay) } } box.onmousemove = debounce((e)=>{ console.log(1); },200,true); </script> </body> </html>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzjfjj.html