防抖和节流有什么区别?

这篇具有很好参考价值的文章主要介绍了防抖和节流有什么区别?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、理解防抖和节流

防抖:在单位时间内频繁触发事件,只有最后一次生效

比如:在游戏回城的时候被打断,再次点回城就会重新计时,最终只有没被打断的最后一次,才能成功回城,就是防抖

节流:在单位时间内频繁触发事件,只生效一次(也就是只有第一次生效)

比如:鼠标点击下一张轮播图,不管单位时间内连续点击了多少次,轮播图都是2秒换下一张,就是节流

防抖和节流都是性能优化的一种手段

二、相同点

1.都可以通过使用 setTimeout 来实现

2.都可以降低回调执行频率,节省计算资源

三、不同点

1.定义不同

函数防抖:一段时间内连续触发事件,只执行最后一次

函数节流:一段事件内只执行一次

2.应用场景不同

防抖:(1)手机号、邮箱地址的校验 (2)当用户input框输入完成后再发请求,如搜索等

节流: 高频事件,如:多少秒之后获取验证码、resize 事件和scroll 事件等

四、代码实现

1.防抖:

<body>

  <input type="text" id="i">

  <script>

    // 1.防抖

    document.querySelector('#i').addEventListener('input', () => {

      debounce()

    })

    let timeId = null

    const debounce = () => {

      clearTimeout(timeId)

      timeId = setTimeout(() => {

        console.log("防抖最后一次输出");

      }, 1000)

    }

  </script>

</body>文章来源地址https://www.toymoban.com/news/detail-441695.html

 防抖实现效果:

防抖和节流有什么区别?

2.节流:

<body>

   <input type="button" id="btn" value="获取验证码">

  <script>

   

// 2.节流

    let flag = true // 设置控制开关

    let timeId = null

    const inp = document.querySelector('#btn')

    inp.addEventListener("click", () => {

      if (!flag) {

        return

      }

      flag = false

      let s = 5

      timeId = setInterval(() => {

        s -= 1

        if (s < 1) {

          inp.value = '获取验证码'

          flag = true

          s = 5

          clearInterval(timeId)

        } else {

          inp.value = s + '秒后再次获取验证码'

        }

      }, 1000)

    })

  </script>

</body>

到了这里,关于防抖和节流有什么区别?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小程序如何使用防抖和节流?

    防抖(Debounce)和节流(Throttle)都是用来优化函数执行频率的技术,特别在处理用户输入、滚动等频繁触发的情况下,它们可以有效减少函数的执行次数,从而提升性能和用户体验。但它们的工作方式和应用场景有所不同。 防抖的主要思想是,当持续触发事件时,在事件最

    2024年02月13日
    浏览(37)
  • axios、跨域与JSONP、防抖和节流

    Axios 是专注于 网络数据请求 的库。 相比于原生的 XMLHttpRequest 对象,axios 简单易用 。 相比于 jQuery,axios 更加 轻量化 ,只专注于网络数据请求。 axios.get(\\\'url\\\', { params: { /*参数*/ } }).then(callback) 例如: axios.post(\\\'url\\\', { /*参数*/ }).then(callback) 例如: 例如: 如果两个页面的 协议

    2024年02月08日
    浏览(40)
  • Vue - 使用Lodash实现防抖和节流

    GitHub Demo 地址 在线预览 Lodash 官网 更新:对应的vue3版的demo如下: GitHub Demo 地址 在线预览 参考: Vue 防抖节流 详细介绍 vue 优雅的实现防抖和节流 防抖、节流的介绍 js防抖和节流的实现原理及应用场景 js防抖节流应用场景及写法 JS中的防抖 函数节流(throttle)与 函数防抖(

    2024年02月01日
    浏览(44)
  • 了解同源策略 JSONP 案例-淘宝搜索 防抖和节流

    什么是跨域 同源指的是两个 URL 的协议、域名、端口一致,反之,则是跨域。 出现跨域的根本原因:浏览器的同源策略不允许非同源的 URL 之间进行资源的交互。 网页:http://www.test.com/index.html 接口:http://www.api.com/userlist 浏览器对跨域请求的拦截 注意:浏览器允许发起跨域请

    2024年02月05日
    浏览(57)
  • 了解防抖和节流:提升前端交互体验的实用策略

    本文将重点介绍前端性能优化方法之一的防抖和节流。首先解释了它们的概念和原理,然后探讨了它们在前端开发中的应用场景,如输入框搜索、滚动事件等。最后,通过简单的代码示例展示了如何实现防抖和节流函数。通过学习和应用这两种技术,我们可以有效地减少不必

    2024年02月05日
    浏览(39)
  • JS手写防抖和节流函数(超详细版整理)

    防抖(debounce) :每次触发定时器后,取消上一个定时器,然后重新触发定时器。防抖 一般用于用户未知行为的优化 ,比如搜索框输入弹窗提示,因为用户接下来要输入的内容都是未知的,所以每次用户输入就弹窗是没有意义的,需要等到用户输入完毕后再进行弹窗提示。

    2024年02月04日
    浏览(36)
  • 19、节流和防抖的区别以及应用场景的理解

    节流和防抖两者有什么区别? 节流和防抖分别用于什么场景? 节流( throttle )和防抖( debounce )是两种常用的浏览器事件处理方法。 相同点: 都是为了减少事件触发频率,优化性能。 不同点: 节流是指在一段时间内最多触发一次事件,节流算法会在特定的时间间隔内判断是否触

    2024年02月03日
    浏览(48)
  • 前端性能优化的利器 ——— 浅谈JavaScript中的防抖和节流

    防抖和节流函数是工作中两种常用的前端性能优化函数,今天我就来总结一下什么是防抖和节流,并详细说明一下如何在工作中应用防抖和节流函数 在 JavaScript 中,防抖(debounce)和节流(throttle)是用来限制函数执行频率的两种常见技术。 防抖(debounce) 是指在某个时间段

    2024年02月14日
    浏览(48)
  • 1 vue防抖和限流

    防抖(Debouncing)是一种前端开发中常用的技术,用于限制函数的执行频率。在防抖的机制下,一个函数在一定时间内只会执行一次,即使它被频繁地调用。 具体来说,防抖的实现方式是设置一个定时器,在每次函数被调用时,先清除之前的定时器,然后重新设置一个新的定

    2024年01月19日
    浏览(39)
  • Vue 3 中的极致防抖/节流(含常见方式防抖/节流)

    各位朋友你们好呀。今天是立春,明天就是正月十五元宵节了,这种立春 + 元宵相隔的时候,可是很难遇到的,百年中就只有几次。在这提前祝大家元宵快乐。 今天给大家带来的是 Vue 3 中的极致防抖/节流(含常见方式防抖/节流) 这篇文章,文章中不仅会讲述原来使用的防

    2024年02月01日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包