78GyYyaxL

23朵毒蘑菇

阻断式的函数节流,可以获取状态。

原文章迁移

工具函数

2021-08-05 15:04:39 已有版本 1 个 show:0.59kTYPE: blog

阻断式的函数节流,之前的节流方式是生成一个函数,连续的调用这个函数时进行节流,这样无法知道调用失败的情况。

/*
    阻断式的函数节流
    使用该方法生成一个对象,访问对象的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 '不允许写入';
        },
    });
}