单位时间执行一次并在最后执行一次方法
常用于页面缩放、滚动事件、鼠标移动事件节流处理
const delayFnO: { [x: string]: any } = {};
function delayTimeOut(key: string, time: number) {
if (!time) return;
setTimeout(() => {
if (delayFnO[key]) delayFnO[key]();
if (delayFnO[key]) {
delete delayFnO[key];
delayTimeOut(key, time);
}
}, time);
delayFnO[key] = () => {
delete delayFnO[key];
};
}
export function delayFn(key: string, fn: any, time = 200) {
if (delayFnO[key]) {
delayFnO[key] = fn;
return;
}
delayTimeOut(key, time);
fn();
}