传统防抖函数调用较为简单,须要传入函数,且总是执行最初一次。
function debounce(func, wait) {
let timer;
return function() {
let context = this; // 留神 this 指向
let args = arguments; // arguments中存着e
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, args)
}, wait)
}
}
当初须要给零碎各个中央加防抖,只执行第一次,前面的操作作废。如果用传统的防抖办法,调用太麻烦了。简化一下,最好用一行代码就能够实现防抖。
封装的办法:
function deboundce(wait) {
let timer;
return function() {
let status = true;
if (timer) {
clearTimeout(timer);
status = false;
}
timer = setTimeout(()=> {
clearTimeout(timer);
timer = false;
}, wait);
return status;
}
}
export const debPromise = deboundce(500);
调用办法:
import { debPromise } from '../utils/deboundce.js';
function() {
if(!debPromise()) return;
//后续操作
}
发表回复