@mt-kit/utils
Version:
20 lines (19 loc) • 953 B
TypeScript
/**
* 防抖
*
* 只有在某个时间内,没有再次触发某个函数时,才真正的调用这个函数
*
* 防抖的应用场景:
* ① 搜索框(确保不会每次输入都发送请求);
* ② 频繁的点击按钮,触发某个事件;
* ③ 监听浏览器滚动事件,完成某些特定操作;
* ④ 用户缩放浏览器的 resize 事件。
*
* @param {Function} func 执行的方法
* @param {number} wait 毫秒
* @param {boolean} immediate 立即执行(让其在第一次输入的时候,就给用户一个联想)
* @returns 返回一个函数,该函数返回一个 Promise,解析为执行的方法的返回值。另外,该函数还具有一个 cancel 方法,用于取消防抖
*/
export default function debounce<T extends (...args: unknown[]) => unknown>(func: Function, wait?: number, immediate?: boolean): ((...args: Parameters<T>) => Promise<ReturnType<T>>) & {
cancel: () => void;
};