实现搜索框搜索
input输入value 下面发送请求request 显示content
逐次发送请求 无疑会影响性能
可以采用防抖或节流 优化
函数节流 函数执行一次后只有大于设定的执行周期后才会执行第二次
应用 需要频繁触发的函数 为了优化性能
在规定时间内 只让函数触发的第一次生效 后面不生效
/* fn节流函数 delay 规定时间 */
function throttle(fn, delay) {
// 设置变量记录上一次函数触发时间
let lastTime = 0
return function() {
// 记录当前函数触发时间
let nowTime = Date.now();
// 当前时间减去上一次触发时间 大于规定时间 执行fn 规定时间内不执行
if (nowTime - lastTime > delay) {
fn();
// 同步时间
lastTime = nowTime
}
}
}
throttle(fn1(),200)
函数防抖
一个频繁触发函数在规定时间内 只让最后一次生效 前面不生效
function debounce(fn, delay) {
let timer = null //记录上一次延时器
return function() {
clearTimeout(timer) //清除上一次定时器
// 重新设置定时器
timer = setTimeout(function() {
fn.apply(this)
}, delay);
}
}
debounce(fn2(),300)