函数节流的原理

  • 首先,我们需要知道什么是函数节流

函数节流就是针对调用频率高的函数,通过设置定时器,使其在执行后间隔一段时间,才进行下一次的执行,避免重复频繁的调用导致的浏览器性能以及ajax重复调用问题。

  • 那么问题来了,有哪些函数是调用频率高的呢?

最常见的一些需要节流的事件:onresizescrollmousemove ,mousehover,因为这些事件会在页面中频繁被触发

  • 那么,函数节流该如何实现呢?思路是什么呢?

主要实现思路就是通过setTimeout定时器,通过设置延时时间,在第一次调用时,创建定时器,写入需要执行的函数。第二次调用时,会清除前一个定时器并设置新的定时器。如果这时前一个定时器暂未执行,则将其替换为新的定时器。目的在于在一定的时间内,保证多次函数的请求只执行最后一次调用

这个时候,我们看一个简单的例子

  • HTML
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>函数节流测试</title>
</head>
<body>
<div class="box">我是一个div</div>
</body>
</html>
  • JS代码
document.querySelector('.box').addEventListener('mouseenter',function(){
  console.log('鼠标进来啦')
})
  • 这个时候在DIV里来回晃动鼠标,控制台会打出很多鼠标进来啦

如果对JS进行简单的修改,变成下面这样

var clock
document.querySelector('.box').addEventListener('mouseenter',function(){
  clearTimeout(clock)
   clock = setTimeout(function(){
    console.log('鼠标进来啦')
  },1000)
})

那么,我用鼠标去来回晃的结果就是下面这样了,它只会在我进入div并且1S内没有再次进入的时候才会执行


那么这就是一个简单的函数节流的实现,通过了解原理我们就可以优化我们的代码

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 首先,我们需要知道什么是函数节流 举个例子:一个水龙头在滴水,可能一次性会滴很多滴,但是我们只希望它每隔 500m...
    Yin先生阅读 5,364评论 2 1
  •   JavaScript 是一种极其灵活的语言,具有多种使用风格。   一般来说,编写 JavaScript 要么...
    霜天晓阅读 4,138评论 0 0
  • 前言 props与state都是用于组件存储数据的一js对象,前者是对外暴露数据接口,后者是对内组件的状态,它们决...
    itclanCoder阅读 6,502评论 0 0
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,162评论 0 3
  • 不再习惯为你点赞 天天拍的都是自己 无非是每次换套新衣服 换个新地方 无非是晒晒自己今天过的 挺开心 吃喝玩乐呗 ...
    安静的影子阅读 1,612评论 1 1

友情链接更多精彩内容