手写节流函数函数节流是指规定一个单位时间,在这个单位时间内,只能有一次触发事件的回调函数执行,如果在同一个单位时间内某事件被触发多次,只有一次能生效。节流可以使用在 scroll 函数的事件监听上,通过事件节流来降低事件调用的频率。

1,定义之前的时间为0

2,返回一个函数,获得this和参数,获得当前的时间戳

3,当前时间戳与之前的时间相减,大于wait则执行,并更新前一个时间

let count=0let box=document.getElementById('box')function hh(){box.innerHTML=count++
}box.onmousemove=tt(hh,1000)function tt(fn,wait){let old=0return function(){let that=thislet args=argumentslet now=+ new Date()if(now-old>wait){fn.apply(that,args)old=now}}
}

定时器实现:

function dd(fn,wait){let thia,args,treturn function(){thia=thisargs=argumentsif(!t){setTimeout(()=>{t=nullfn.apply(thia,args)},wait)}}
}

两种方式实现节流函数相关推荐

  1. DLL中导出函数的声明有两种方式

    本文引用自:VC编程时DLL中导出函数的声明有两种方式 一种方式是:在函数声明中加上__declspec(dllexport): 另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链 ...

  2. EntityFramework Core 2.0自定义标量函数两种方式

    前言 上一节我们讲完原始查询如何防止SQL注入问题同时并提供了几种方式.本节我们继续来讲讲EF Core 2.0中的新特性自定义标量函数. 自定义标量函数两种方式 在EF Core 2.0中我们可以将 ...

  3. [js] axios为什么可以使用对象和函数两种方式调用?是如何实现的?

    [js] axios为什么可以使用对象和函数两种方式调用?是如何实现的? axios 源码 初始化 看源码第一步,先看package.json.一般都会申明 main 主入口文件. // packag ...

  4. java native函数库_Java 层调用 Native 层函数的两种方式

    概述 Java 层如何调用Native层函数,大家都应该知道使用JNI(Java 本地接口). 通过在java层声明native方法,然后遵守JNI规范命名Native函数,即可建立Java层nati ...

  5. python循环展示大写字母_python调用大写函数python中字典的循环遍历的两种方式

    开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...

  6. Google Earth Engine (GEE)——利用两种方式进行EVI指数(含函数的两种定义方式)

    如何快速使用波段进行指数的计算,我们这里利用两种方式进行EVI指数计算,一种是利用expression的方式进行分析,虽然两种方法的结算结果都一样,但是代码有多有少,大家可以参考使用,但是两者的作用对 ...

  7. 【❗划重点!C语言函数参数传递只有两种方式(值传递,地址传递),不支持“引用传递”!❗】

    引子 上篇文章<C语言函数传参の结构体数组篇>提到了C语言的函数参数传递方式,百度了一一一大圈,有说两种的,也有说三种的,简直把我搞晕了,"值传递和地址传递"是毫无疑问 ...

  8. 二级指针在子函数中申请内存的两种方式

    二级指针:在主函数中申明变量,在子函数中分配内存,有两种方式返回二级指针.在这个过程只有深刻理解了C的函数调用模型,以及指针的内存模型,才能够掌握好. #pragma once #include &l ...

  9. 主程序调用动态库的两种方式,动态库调用主程序的函数

    主程序调用动态库有两种方式,即隐式调用和显式调用. 隐式调用就是共享方式,程序一开始运行就调进去.在链接时候用如下的方式链接动态库:gcc -o main main.o -L./lib -ltest( ...

最新文章

  1. redisson的锁的类型_绝对干货:利用redisson完成分布式锁功能
  2. html不居中代码,HTML – 为什么我不能居中div?
  3. 用最快速度,打造「最强 Webpack 前端工具链」,强势运行
  4. Aloy:风格化角色的设计和建模
  5. Jboss/Wildfly安装配置
  6. 第三次学JAVA再学不好就吃翔(part37)--接口概述
  7. 通过Server-U设置网络共享文件夹的步骤和注意事项
  8. Currency Exchange
  9. 获取iPhone手机 UDID的方式--一网打尽(无论有无MAC电脑)
  10. 360极速浏览器调用selenium
  11. 第一章: 准备面试要知己知彼
  12. 利用background-position 制作图片爆炸的效果
  13. 廖雪峰老师个人网站推荐
  14. Python网络爬虫实战1:百度新闻数据爬取
  15. 用Python打造一个智能搜索淘宝商品,生成操作日志的系统
  16. 供应链管理系统--(1)退供管理
  17. LEA指令和OFFSET指令
  18. 复旦计算机夏令营英语口语,保研夏令营时间|复旦大学计算机学院2020保研夏令营...
  19. 扬州大学计算机控制技术课设,计算机控制技术的课设.doc
  20. C++_计算字符串长度

热门文章

  1. html5发光动态效果图,一款带有发光动画的HTML5表单
  2. 自定义Hibernate Validator规则注解
  3. Ehcache小结(一)
  4. android sudio提示快捷键冲突解决
  5. android studio卡顿解决方案
  6. java通过jdbc访问mysql,update数据返回值的思考
  7. 初识EntityFramework6【转】
  8. linux 命令笔记
  9. 【docker学习之二】Docker的基本概念
  10. Nobot控件------拒绝机器人行为