Javascript里的一些常用的工具类
2010 年 12 月 9 日
作者:朋也
日期:2021-02-24
版权声明:自由转载-非商用-非衍生-保持署名( 创意共享3.0许可证
)
节流
节流函数一般用于事件上的,比如浏览器的滚动事件
window.addEventListener("scroll", function(e) { console.log("123123"); })
当滚动浏览器的时候,这个回调会被执行非常多次,这就不太好了,可以通过节流来限制在一段时间内只执行一次
定义一个节流的方法
function throttle(callback, wait) { let start = 0; return function (e) { let now = Date.now(); if (now - start > wait) { callback.call(this, e); start = now; } } }
然后改造一下滚动事件对象
window.addEventListener("scroll", throttle(function(e) { console.log("123123"); }), 500); // 500ms才执行一次这个滚动事件
防抖
防抖的使用场景一般是在自动完成的地方,当在输入框里输入想搜索的内容时,如果不加防抖,那么每输入一个字符,就会发送一次请求获取一下要自动显示的内容,这显然是不合理的
防抖函数的原理是当触发一个事件时,它会等待一会(设定的时间)在等待的这段时间里,如果再次触发了事件,那么这个时间会重置,当在等待的时间内没有触发事件且时间也过了,才会触发事件
上面的节流函数是当事件触发时会立即执行,然后记录一个时间,下次再触发时会判断时间过没有,过了才会再次触发
function debounce(callback, time) { let timeId = null; return function (e) { if (timeId != null) { clearTimeout(timeId); } timeId = setTimeout(() => { callback.call(this, e); timeId = null; }, time); } }
给一个input输入框绑定上输入事件