Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >手动实现函数节流(throttle)

手动实现函数节流(throttle)

作者头像
我乃小神神
发布于 2020-05-18 08:01:39
发布于 2020-05-18 08:01:39
31400
代码可运行
举报
文章被收录于专栏:前端基础前端基础
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	/*
	* 函数节流
	* 简单地讲,就是让一个函数无法在很短的时间间隔内连续调用,只有当上一次函数执行后过了你规定的时间间隔,、
	* 
    */
	<body>
		<script>
			function throttle(fn,incomingTime){
				let time=''
				return function(){
					let calculateTime= + new Date()
					if(calculateTime -time>incomingTime|| !time){
						fn()
						time=calculateTime
					}
				}
			}
			let fn=()=>{
				console.log("大哥好")
			}
			setInterval(throttle(fn,1000),1000)

       function throttle(fn) {
      let canRun = true; // 通过闭包保存一个标记
      return function () {
        if (!canRun) return; // 在函数开头判断标记是否为true,不为true则return
        canRun = false; // 立即设置为false
        setTimeout(() => { // 将外部传入的函数的执行放在setTimeout中
          fn.apply(this, arguments);
          // 最后在setTimeout执行完毕后再把标记设置为true(关键)表示可以执行下一次循环了。
          //当定时器没有执行的时                     候标记永远是false,在开头被return掉
          canRun = true;
        }, 500);
      };
    }
    function sayHi(e) {
      console.log(e.target.innerWidth, e.target.innerHeight);
    }
    window.addEventListener('resize', throttle(sayHi));

		</script>
	</body>
</html>

每一秒钟打印一次 大哥好

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
javaScript 函数节流
什么是javascript函数节流?从其字面意思可以大概猜到是一种为提升函数调用执行性能的一种方法。javascript函数节流就是针对调用频率高的函数,通过设置定时器,使其在执行后间隔一段时间,才进行下一次的执行,避免重复频繁的调用导致的浏览器性能以及ajax重复调用问题。 函数节流的经典应用场景:onresize,scroll,mousemove ,mousehover等事件回调函数的无间断执行。其主要实现思路就是通过setTimeout定时器,通过设置缓冲时间,在第一次调用时,创建定时器,并在定时时间
用户1097444
2022/06/29
4890
javaScript 函数节流
节流函数和防抖函数的注意事项
关于防抖和节流函数的详细分析请看以下两篇文章,此处不再重述,本文章主要讲述运用过程中出现的问题
IT人一直在路上
2019/09/18
7420
javaScript 函数节流
IMWeb前端团队
2018/01/08
9340
javaScript 函数节流
函数去抖(debounce)& 函数节流(throttle)总结
让某个函数在一定 事件间隔条件(去抖debounce) 或 时间间隔条件(节流throttle) 下才会去执行,避免快速多次执行函数(操作DOM,加载资源等等)给内存带来大量的消耗从而一定程度上降低性能问题。
全栈程序员站长
2022/09/06
2.6K0
函数去抖(debounce)& 函数节流(throttle)总结
JavaScript 高频函数优化-函数防抖&函数节流
什么是高频函数? oninput(实时获取输入的数据) onscroll(监听页面的滚动) onresize(监听浏览器可视区域的变化) onmousemove(移动端监听手指在屏幕的滑动) 什么是函
前端小tips
2021/11/24
3700
JavaScript 高频函数优化-函数防抖&函数节流
函数节流与函数防抖
函数节流与函数防抖的目的都是为了减少用户对服务器不必要的请求次数,以此提高服务器性能的函数。节流是在一段时间内,只向服务器请求一次。防抖则是在频繁触发相同请求时,若任务之间间隔小于指定时间,那么只会执行最后一次请求。
_kyle
2020/08/22
5370
JavaScript函数节流和函数防抖之间的区别
函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段。  大家大概都知道旧款电视机的工作原理,就是一行行得扫描出色彩到屏幕上,然后组成一张张图片。由于肉眼只能分辨出一定频率的变化,当高频率的扫描,人类是感觉不出来的。反而形成一种视觉效果,就是一张图。就像高速旋转的风扇,你看不到扇叶,只看到了一个圆一样。  同理,可以类推到js代码。在一定时间内,代码执行的次数不一定要非常多。达到一定频率就足够了。因为跑得越多,带来的效果也是一样。倒不如,把js代码的执行次数控制在合理的范围。既能节省浏览器CPU资源,又能让页面浏览更加顺畅,不会因为js的执行而发生卡顿。这就是函数节流和函数防抖要做的事。
我是leon
2019/08/28
1.1K0
JavaScript函数节流和函数防抖之间的区别
JS函数节流和函数防抖
之所以返回一个函数,因为防抖本身更像是一个函数修饰,所以就做了一次函数柯里化。里面也用到了闭包,闭包的变量是timer。
用户1437675
2019/07/19
1.1K0
【JS】javaScript 函数节流
什么是javascript函数节流?从其字面意思可以大概猜到是一种为提升函数调用执行性能的一种方法。javascript函数节流就是针对调用频率高的函数,通过设置定时器,使其在执行后间隔一段时间,才进行下一次的执行,避免重复频繁的调用导致的浏览器性能以及ajax重复调用问题。
Ning@
2021/11/10
1.1K0
谈谈JS中的函数节流
好吧,一直在秋招中,都没怎么写博客了。。。今天赶紧来补一补才行。。。我发现,在面试中,讲到函数节流好像可以加分,尽管这并不是特别高深的技术,下面就聊聊吧! ^_^ 备注:以下内容部分来自《JavaScript高级程序设计》 函数节流的目的 从字面上就可以理解,函数节流就是用来节流函数从而一定程度上优化性能的。例如,DOM 操作比起非DOM 交互需要更多的内存和CPU时间。连续尝试进行过多的DOM 相关操作可能会导致浏览器挂起,有时候甚至会崩溃。尤其在IE 中使用onresize 事件处理程序的时候容易发生,
用户1667431
2018/04/18
1.5K0
谈谈JS中的函数节流
javascript函数防抖节流,适用于搜索多次触发请求等场景。
可以看到,我们只要输入一个字符,就会触发这次ajax请求。不仅从资源上来说是很浪费的行为,而且实际应用中,用户也是输出完整的字符后,才会请求。下面我们优化一下:
江一铭
2022/06/17
1.2K0
javascript函数防抖节流,适用于搜索多次触发请求等场景。
JavaScript中的函数防抖与函数节流
函数防抖(debounce)当调用动作过n毫秒后,才会执行该动作,若在这n毫秒内又调用此动作则将重新计算执行时间。
刘亦枫
2020/03/19
5880
JavaScript网页性能优化(函数防抖与函数节流)
b.输入框事件:验证手机号或者邮箱,用户输入时不断触发键盘事件,应该等用户结束输入之后,以最后一次输入为准
帅的一麻皮
2020/05/16
1.4K0
函数节流
函数节流的定义: 规定的单位时间内只执行一次,如果在单位时间内执行了多次,那么最后也只会执行一次。
用户4344670
2020/06/28
5910
大厂高频面试精选
key 的作用是为了在 diff 算法执行时更快的找到对应的节点,提高 diff 速度。
grain先森
2019/03/28
8110
大厂高频面试精选
js中的防抖和节流
原理:设置一个定时器,如果在设定的时间间隔内事件再次触发,就会清除上一次的定时器并重新设置和计时,直到指定时间间隔内没有再次触发,才会执行函数
前端小tips
2021/11/24
1.6K0
js中的防抖和节流
JavaScript防抖节流
f1保存的是return function(){console.log(n)}这个匿名函数所在堆地址的引用,并不是赋值。
ymktchic
2022/01/18
5160
JavaScript防抖节流
微信小程序 函数防抖和函数节流
函数节流是减少函数的触发频率;函数防抖是延迟函数执行,且不管触发多少次都只执行最后一次
peng_tianyu
2022/12/15
1.4K0
简单复习下什么是JavaScript的防抖和节流
使用场景:click、onMouseOver,onMouseMove,resize,input,scroll等
前端达人
2021/06/16
5160
带你“深入”节流
比如说吃饭。吃饭说明规定,五个小时吃一次。吃了一次饭,小狗蹦蹦哒哒地玩了五个小时。五个小时一到, 小狗再回来吃饭。依次类推,每五小时回来吃一次饭。
ClyingDeng
2023/03/04
7040
带你“深入”节流
相关推荐
javaScript 函数节流
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验