美文网首页
防抖和节流

防抖和节流

作者: WWWWWWWWWWWWWWM | 来源:发表于2021-04-01 10:26 被阅读0次

防抖和节流都是解决用户频繁操作的一种解决方案,区别是:

debounce 防抖

用户在频繁操作的时候,只有当用户操作结束之后,才触发需要执行的方法(比如设置5s的防抖,意思就是在5s内,不管用户操作了多少次,都不会执行,只有当用户停止操作,5s之后才执行1次);

  • 应用,当用户点击保存的时候,避免用户多次点击保存,下发多个保存接口。
  • 注意:上面说了5s之后才执行,这只是防抖的一种,还有那种先立即执行一次,然后在5s不管你点击几次,都不执行,只有过了5s,在点击才会执行

throttle 节流

是用户在频繁操作的时候,用户的操作频率太快,通过设置节流,让用户操作执行的方法频率降低(比如用户设置了5s的节流,用户现在1s中操作一次,那用户第一秒第二秒,第三秒,第四秒的操作都不会执行方法,只有第五秒才会执行)

  • 应用,当用户在滚动页面时,如果需要监听滚动事件,如果不设置节流,会大量执行监听事件,浪费性能,因此需要节流,比如设置500ms,才执行一次
  • 注意:下面这个实现方式是通过时间戳来实现的,还可用用过setTimeout来实现,有多种方式。

debounce 防抖

//代码
function debounce(fn, t) {
    let timer;
    return function () {
        if (timer) {
            clearTimeout(timer);
        }
        timer=  setTimeout(() => {
            fn.apply(this, arguments)
        }, t)
    }
}
//应用(此代码意思是在1s内无论点击多少次btn,都不会打印,直至停止后1s)
<button id="btn">click</button>   //html
//js
    let btn = document.getElementById('btn');
    btn.onclick = debounce(function() {
        console.log(111)
    }, 1000)

throttle 节流

//代码
function throttle(fn, t) {
        let t1 = new Date().getTime();
        return function() {
            let t2 = new Date().getTime();
            // console.log(t2, t1)
            if ((t2 - t1) >= t) {
                fn.apply(this,arguments);
                t1 = t2;
            }
        }
}
//应用(此代码是监听scroll滚动,原先是滚动多次执行,现在是滚动1s中执行一次)
window.addEventListener('scroll', throttle(function () {
    console.log(123)
}, 1000))


相关文章

  • 谈谈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/ngttkltx.html