传统防抖函数调用较为简单,须要传入函数,且总是执行最初一次。
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; //后续操作}