问题现象描述
初级处理办法(没啥用)
window.addEventListener("resize", () => {
setTimeout(() => {
// 需要执行的代码块
},500)
});
只是在里面套了个 setTimeout 这样的结果只是减少了图片闪的频率,但是还是会闪
常规处理办法(防抖)
【1.】先写一个 debounce 防抖函数
debounce(fn, delay) {
let time = null;
let timer = null;
let newTime = null;
function task() {
newTime = +new Date();
if (newTime - time < delay) {
timer = setTimeout(task, delay);
} else {
fn();
timer = null;
}
time = newTime;
}
return function () {
// 更新时间戳
time = +new Date();
if (!timer) {
timer = setTimeout(task, delay);
}
};
},
【2.】在 window.resize 里