防止用户的请求过于频繁
只要最后一次的时间操作
防抖算法:
let inp = document.querySelector("input");let time = null;inp.oninput = function() {if (t !== null) {clearTimeout(t);}t = setTimeout(() => {// 封装的业务逻辑代码}, 500);}
设置input输入框,绑定事件oninput,输入框检测到用户的输入时,触发function函数,每一次触发,t都会被附一个计时器,假设第一次触发事件后以后都不在触发事件,则在500ms后自动执行封装的业务逻辑代码,如果在500ms之后又进行了一次触发操作,则原计时器会被清空,并且赋给变量time一个新的计时器,重新从500ms开始倒计时,这样如果每次的触发事件的时间间隔都小于500ms时,业务逻辑不会执行,等到计时器到时间了才会执行。
注意:防抖的算法和核心业务逻辑分开封装,利用闭包封装。
let inp = document.querySelector("input");inp.oninput = debounce(function() {// 封装业务逻辑代码}, 500) // 传入两个参数,执行业务逻辑函数,防抖的时间间隔function debounce(fn, delay) {return function() {if (t !== null) {clearTimeout(t);}t = setTimeout(() => {fn();}, delay);}}
