美文网首页
防抖和节流

防抖和节流

作者: 空空雨夜 | 来源:发表于2021-03-04 10:02 被阅读0次

什么是抖?

鼠标和键盘等事件会频繁触发,比如mousemove事件,当鼠标滑动的时候就会触发事件,并运行事件里的运算。这样会消耗大量性能。

怎么防抖?

使用定时器setTimeout,异步调用mousemove事件,当鼠标停止滑动的时候才触发mousemove事件

function handle({clientX,clientY}){
    document.body.innerHTML = `X:${clientX},Y:${clientY}`
}
document.addEventListener('mousemove', handle)

上面的代码只要鼠标滑动,事件就会触发,下面展示防抖代码

function debounce(fn,time){
    let timer;
    return function(event){
        clearTimeout(timer);//事件触发时先清除定时器
        document.body.innerHTML = "鼠标停止滑动显示效果";
        timer = setTimeout(() => {
            fn(event)
        }, time)
    }
}
document.addEvevtListener('mousemove', debounce(handle,500);

当鼠标停止滑动后,才绑定异步函数,触发mousemove事件

节流

节流就像是一个有定时器的阀门,在这个事件段内无论怎么操作阀门都不会打开,但,只要时间一到就打开阀门,然后重新开始。鼠标滑动过程中事件会一直触发,使用定时器,使事件按设定的频率触发,而不是一直触发。

节流代码

function throttle(fn,time){
    var begin = new Date();
    return function(event){
        // fn作为回调函数,this不会指向调用事件的对象
        // 这里需要使用call改变this的指向
        let that = this
        // 也有可能传入参数,所以也需要传入参数
        let args = arguments
        if(new Date() - begin < time){
            return;
        }
        fn.apply(that, args);
        begin = new Date();
    }
}
document.addEventListener('mousemove', throttle(handle, 500));

防抖和节流的区别

防抖:鼠标滑动停止过才触发事件
节流:鼠标滑动过程中,按设定的频率触发事件,达到节省性能的目的。

关键字

定时器,高阶函数,this指向

相关文章

  • 谈谈js中的节流和防抖函数

    关于节流和防抖,这篇文章说的很好了,深入lodash源码分析防抖和节流深入篇 | Lodash 防抖和节流是怎么实...

  • JavaScript防抖和节流

    1. 认识防抖和节流 1.1. 对防抖和节流的认识 防抖和节流的概念其实最早并不是出现在软件工程中,防抖是出现在电...

  • 前端性能优化-浅谈js防抖和节流

    浅谈js防抖和节流

  • Javascript 基础

    1、函数防抖和函数节流 【《javascript高级程序设计》里,函数节流是这里讲的函数防抖。】函数防抖: 在事件...

  • js 防抖 节流

    节流 防抖1 防抖2

  • 2019-03-27

    js的防抖和节流 据我所知防抖和节流都是为了优化作用,减轻浏览器和服务端的负担,防抖和节流俩个的英文要记住: de...

  • js的防抖和节流

    js的 防抖(debounce)和 节流(throttle ) 防抖和节流一般用于高频触发事件,属于浏览器性能优化...

  • 手写防抖和节流函数实现

    1. 认识防抖和节流函数 防抖和节流的概念其实最早并不是出现在软件工程中,防抖是出现在电子元件中,节流出现在流体流...

  • 实现防抖和节流

    一、认识防抖和节流函数 防抖和节流的概念其实最早并不是出现在软件工程中,防抖是出现在电子元件中,节流出现在流体流动...

  • 2019-04-24关于节流和防抖

    节流: 应用场景: 防抖: 应用场景: 1.节流 2.防抖

网友评论

      本文标题:防抖和节流

      本文链接:https://www.haomeiwen.com/subject/wbvlqltx.html