美文网首页
js 防抖与节流

js 防抖与节流

作者: _小飞飞 | 来源:发表于2020-02-24 14:53 被阅读0次

防抖: 触发事件后,在 n 秒内函数只能执行一次,如果触发事件后在 n 秒内又触发了事件,则会重新计算函数延执行时间。

举个栗子

   <button id="btn">防抖</button>
    var btn = document.getElementById('btn');
    var timer = null;
    btn.onclick = function () {
        clearTimeout(timer)
        timer = setTimeout(function () {
            test.call(this)
        }, 500)
    }
    function test() {
        console.log("我是需要执行的函数")
    }

看上述例子 连续点击防抖按钮,在500毫秒内,函数都会重新计算,只会记录一次有效点击;
使用场景
1.搜索框搜索输入。只需用户最后一次输入完,再发送请求;
2.用户名、手机号、邮箱输入验证;
3.浏览器窗口大小改变后,只需窗口调整完后,再执行 resize 事件中的代码,防止重复渲染。

节流: 限制一个函数在一定时间内只能执行一次。
我们把上面栗子修改一下

   <button id="btn">节流</button>
    var btn = document.getElementById('btn');
    var timer = null;
    btn.onclick = function () {
        if(timer) return;
        timer = setTimeout(function () {
            test.call(this)
            timer = null;
        }, 500)
    }
    function test() {
        console.log("我是需要执行的函数")
    }

简单修改一下, 就可以看出在,500毫秒内函数只能执行一次, 这样我们就可以用在 短时间内防止按钮的重复点击.

使用场景:
1.懒加载、滚动加载、加载更多或监听滚动条位置;
2.百度搜索框,搜索联想功能;
3.防止高频点击提交,防止表单重复提交;

总结:其实防抖和节流看着有些相像,但仔细理解之后还是有所不同, 前者是在规定时间内,只会执行一次有效函数,而且过多的触发,会延长函数执行时间;后者则是在规定时间内只能执行一次,即使再触发也是无效的.

相关文章

  • 函数节流与函数防抖

    函数节流与函数防抖的区别JS魔法堂:函数节流(throttle)与函数去抖(debounce)函数的防抖与节流 自...

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

    浅谈js防抖和节流

  • 防抖和节流

    一、防抖:只执行最后一次 js防抖方法 一、节流:控制执行次数 节流

  • JavaScript:函数防抖与节流

    什么是函数防抖与节流? 函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段。 定义: 防抖: n 秒后在...

  • 微信小程序防抖、节流的使用

    1、防抖、节流函数的封装 在utils文件夹下新建utils.js文件,然后写入节流和防抖函数 在.js页面引入并使用:

  • js函数的防抖(debounce)与节流(throttle)

    js 函数的防抖(debounce)与节流(throttle)[https://www.cnblogs.com/c...

  • js的防抖和节流

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

  • JS 节流与防抖

    本文的主角是节流 throttle 与防抖 debounce。 区别节流强调的是m秒内函数最多触发一次,注意这里的...

  • js防抖与节流

    在前端开发中会遇到一些频繁的事件触发,例如input,keyup,keydown,scroll,resize,mo...

  • js防抖与节流

    1.节流(throttle) 定义:先定义个执行周期,当时间执行时间大于等于执行周期,那就进入新的周期;如果小于执...

网友评论

      本文标题:js 防抖与节流

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