阻断式的函数节流,之前的节流方式是生成一个函数,连续的调用这个函数时进行节流,这样无法知道调用失败的情况。
/*
阻断式的函数节流
使用该方法生成一个对象,访问对象的state属性判断是否可以继续调用
*/
export function throttleFn(wait=0) {
let date;
return new Proxy({},{
get(_,key){
if(key !== 'state') throw '只可访问 state';;
let nowDate = new Date().getTime();
if(!date){
date = nowDate;
return true;
}
if((nowDate - date) >= wait){
date = nowDate;
return true;
}
return false;
},
set(){
throw '不允许写入';
},
});
}