函数节流和防抖动

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>赤壁之战</title>
        <meta http-equiv="X-UA-Compatible" content="edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="Keywords" content="赤壁之战">
        <meta name="description" content="赤壁之战">
    </head>
<body>
<script>
function throttle(func,wait,mustRun){
    var timeout = null;
    var startTime = new Date();
    return function (){
        var context = this,
        args = arguments,
        curTime = new Date();
        clearTimeout(timeout);
        if(curTime - startTime >= mustRun){
            func.apply(context,args);
            startTime = curTime;
        }else{
            timeout = setTimeout(func,wait);
        }  
    }
}
function fn(){
    console.log(1);
}
function fn2(){
    console.log(2);
}
window.addEventListener('scroll',fn,false); 
window.addEventListener('scroll',throttle(fn2,500,1000),false);
</script>
</body>
</html>


<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>赤壁之战</title>
        <meta http-equiv="X-UA-Compatible" content="edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="Keywords" content="赤壁之战">
        <meta name="description" content="赤壁之战">
    </head>
<body>
<script>
function debounce(fn,wait){
    var timeout = null;
    return function (){
        clearTimeout(timeout);
        timeout = setTimeout(fn,wait);
    }
}
function debounce2 (fn,wait,immeditate){
    var timeout = null;
    return function (){
        var context = this,
        args = arguments;
        var later = function (){
            timeout = null;
            if(!immeditate) fn.apply(context,args);
        }
        var callNow = immeditate & !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later,wait);
        if(callNow) func.apply(context,args)
    }
}
function fn(){
    console.log(1);
}

function fn2(){
    console.log(2);
}
window.addEventListener('scroll',fn,false); 
window.addEventListener('scroll',debounce2(fn2,500),false);
</script>  
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值