尽管现在已有很多相关工具库,对于其的理解学习也不能中断
防抖与节流
防抖:将多次触发变为一次触发
节流:减少一段时间的触发频率
防抖:通过setTiemout 限制执行次数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| debounce( submit(){ } )
function debance(fn){ let t = null return function(){ if(t){ clearTimeout(t) } t = setTImeout(()=>{ fn() },1000) } }
1.arguments传参数 2.this指向 当用户点击submit时候会传递参数,event,把实参传递到 当前event为。。。
解决方案: 1.不可取写法: function debounce(fn){ let a = null; return function(e){ if(t){ clearTimeout(t) } console.log(this) t = setTimeout(function()=>{ fn.apply(null,argument) },1000) } } 正解: argunments只在函数内部 通过箭头函数解决次问题,箭头函数没有arguments,因而他拿到的是外层函数的arguments
|
*** 怎么让第一次点击不走延迟
节流