JS节流

作者: owlcity | 来源:发表于2023-03-22 09:51 被阅读0次

节流-throttle(性能优化方式之一)

  • 拖拽一个元素时,要随时拿到该元素的拖拽位置
  • 直接使用drag事件,则会频繁触发,很容易导致卡顿
  • 节流:无论拖拽速度多快,都会每隔100ms触发一次
// 未封装
const dom1 = document.getElementById('dom1')
let timer = null
dom1.addEventListener('drag',function (e) {
    if(timer) {
      return 
    }
    timer = setTimeout(() => {
       console.log(e.offsetX, e.offsetY)
       timer = null
    }, 100)
})

// 封装
function throttle(fn, delay = 200) {
   let timer = null
   return function () {
       if(timer) return
       timer = setTimeout(() => {
         fn.apply(this,arguments)
         timer = null
       },delay)
   }
}
dom1.addEventListener('drag', throttle((e) => {
     console.log(e.offsetX,e.offsetY)
}), 200)

1)此处加入防抖(debounce)和节流(throttle)二者为什么一个是return,一个时clearTimeout?

防抖是触发间隔大于timer才会触发,所以每次在小于间隔time要清除定时器;

节流是不管time内触发多少次,只会每间隔time时间才会触发一次,所以用return
举例:假设time = 100ms,一人每间隔50ms输入一个字符,连续输入十个,那么500ms后,防抖触发1次,节流触发5次

相关文章

  • js节流函数

    JS节流函数 1. 节流函数的定义 2. 节流函数的用法

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

    浅谈js防抖和节流

  • js节流

  • js节流

    function throttle(func, wait) { var timeout, context, ...

  • JS 节流

    Throttling and debouncing in JavaScript Debounce Deep Div...

  • js节流

    节流(throttle) 第一步 实现一个函数,返回一个函数func参数,第一个参数是一个函数,第二个参数是一个数...

  • 防抖和节流

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

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

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

  • js函数节流、防抖

    js 函数节流、防抖 新建index.js将下面代码复制到index.js中

  • 函数防抖和节流

    前言:函数防抖和函数节流都是用于优化高频率执行js的一种手段 节流 函数节流:是指一定时间内js方法只跑一次应用场...

网友评论

      本文标题:JS节流

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