美文网首页
js实现防抖函数

js实现防抖函数

作者: zhao_ran | 来源:发表于2020-09-02 12:00 被阅读0次

函数防抖

当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定时间到来之前,又触发了事件,就重新开始延时。也就是说当一个用户一直触发这个函数,且每次触发函数的间隔小于既定时间,那么防抖的情况下只会执行一次。

上代码

// HTML部分
<body>
    <textarea name="" id="textarea" cols="30" rows="10">
    </textarea>
</body>
//script部分
<script>
    var textarea = document.getElementById('textarea')
    textarea.addEventListener('keydown', debounce(ajaxAction, 500))
    function ajaxAction() {
        console.log('可以发送ajax请求')
    }
    function debounce(fn, delay) {
        var timer = null; // 声明计时器
        return function () {
            var context = this;
            var args = arguments;
            clearTimeout(timer);
            timer = setTimeout(function () {
                fn.apply(context, args)
            }, delay);
        };
    }
</script>

函数节流-封装

/* 
        用来返回节流函数的工具函数
    */
    function throttle(callback, delay) {
      let pre = 0 // 默认值不要是Date.now() ==> 第1次事件立即调用
      return function (event) { // 节流函数/真正的事件回调函数   this是发生事件的标签
        const current = Date.now()
        if (current - pre > delay) { // 只有离上一次调用callback的时间差大于delay
          // 调用真正处理事件的函数, this是事件源, 参数是event
          callback.call(this, event)
          // 记录此次调用的时间
          pre = current
        }
      }
    }
    // 使用封装的节流函数
    document.addEventListener('scroll',throttle(function() {
      console.log('这是带有大量计算的函数')
    },2000))

相关文章

  • js实现防抖函数

    函数防抖 当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定时间到来之前,又触发了事...

  • JS函数防抖

    JS 中的函数防抖 一、什么是函数防抖? 概念: 函数防抖(debounce), 就是指触发事件后,在 n 秒内函...

  • [JavaScript] 函数节流(throttle)和函数防抖

    js 的函数节流(throttle)和函数防抖(debounce)概述 函数防抖(debounce) 一个事件频繁...

  • 函数节流与函数防抖

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

  • JS实现节流函数,防抖函数

    节流函数(throttling fountion)和防抖函数(debouncing fountion)都是为了实现...

  • js函数防抖、节流实现

    React中使用防抖函数和节流函数 在React事件调用时,React传递给事件处理程序是一个合成事件对象的实例。...

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

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

  • 防抖函数及其应用

    建议使用 lodash 插件里面的 debounce 函数来实现 1、防抖函数简单原理 2、防抖函数的应用

  • 面试过程中遇到的问题记录

    1.js的防抖和节流 函数防抖 函数防抖原理(debounce):当持续触发事件时,一定时间段内没有再触发事件,事...

  • 深入JavaScript Day32 - 手写防抖函数debou

    一、防抖函数代码实现 防抖:适用于高频函数的【延迟执行】,比如搜索框的联想功能 0、测试代码 1、最基本的防抖函数...

网友评论

      本文标题:js实现防抖函数

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