JS函数防抖和函数节流

/**
 * JS函数防抖:
 * 一些dom操作例如mousemove、scroll等会频繁发生,绑定在这些事件的函数会不断被触发,
 * 会频繁操作dom,开销很大
 * 
 * 节流方法:最后一次操作才执行,即后面没有再操作了
 * 
 * 第一次触发,新建一个计时器
 * 每次触发函数都清除掉上一个计时器,新建一个计时器
 * 剩最后一个计时器,如果倒计300ms还没有触发则执行最后创建的这个延时函数
 */
var timer = null;
window.onresize = function () {
    if (timer) {
        clearTimeout(timer);
    }
    timer = setTimeout(function () {
        resizehandler();
    }, 300);
}
/**
 * 函数节流
 * 相当于按照一个频率执行,例如每500ms一次
 * 
 * 第一次触发函数的时候记下时间
 * 之后每次触发都检查一下离初始时间多久,到了delay时间就执行函数,让后吧pre时间改成
 * 当前触发时间
 * 
 * 另一种方法和防抖一样
 */
var throttle = function (func, delay) {
    var prev = Date.now();
    return function () {
        var context = this;
        var args = arguments;
        var now = Date.now();
        if (now - prev >= delay) {
            func.apply(context, args);
            prev = Date.now();
        }
    }
}
function handle() {
    console.log("函数节流");
}
//addEventListenenr后面是传入一个函数
window.addEventListener('mousemove', throttle(handle, 1000));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值