您现在的位置是:群英 > 开发技术 > web开发
JavaScript怎么避免抖动,节流的应用要注意什么
Admin发表于 2022-05-26 17:09:42548 次浏览
这篇文章主要给大家介绍“JavaScript怎么避免抖动,节流的应用要注意什么”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“JavaScript怎么避免抖动,节流的应用要注意什么”文章能对大家有所帮助。

概念

防抖:点击n次提交按钮,只有最后一次会发出请求。减少无效请求的次数。

节流:每点击一次按钮,都会失效一段时间。降低触发的频率。

实现

/*
防抖
时限内,只有最后一次调用会执行
*/
function debounce(func, interval = 0) {
	let timer;
	return function () {
		if (timer) {
			cleartimeout(timer);
		}
		timer = settimeout(() => {
			func()
		}, interval)
	}
}
/*
节流
执行之后会失效一段时间
*/
function throttle(fn, interval=0, immediate=true) {
	let valid = true
	return function () {
		if (!valid) {
			return
		}
		valid = false
		if (immediate) {
			fn()
			settimeout(() => {
				valid = true;
			}, interval)
		} else {
			settimeout(() => {
				fn()
				valid = true;
			}, interval)
		}
	}
}

测试

function say() {
	console.log(1)
}
var a = debounce(say, 1000)
var b = throttle(say, 1000)
var c = throttle(say, 1000, false)

<button onclick="a()">测试防抖</button>
<button onclick="b()">测试节流一</button>
<button onclick="c()">测试节流二</button>

效果:

防抖。

节流,立即执行。

节流,延时执行。

注意事项

原理:闭包。每调用一次都会对应一个闭包。

不能够像下面这样写:

<button onclick="debounce(say, 1000)()">测试防抖</button>
<button onclick="throttle(say, 1000)()">测试节流一</button>
<button onclick="throttle(say, 1000, false)()">测试节流二</button>

不然:

总结



以上就是关于“JavaScript怎么避免抖动,节流的应用要注意什么”的介绍了,感谢各位的阅读,希望文本对大家有所帮助。如果想要了解更多知识,欢迎关注群英网络,小编每天都会为大家更新不同的知识。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: js,防抖,节流
相关信息推荐
2021-12-30 20:35:25 
摘要:有时候我们需要将阿拉伯数字转成对于的中文,那么这样的效果究竟要怎样做呢?对此这篇就给大家来用Python实现数字转中文,下文分享了两种转换方式,示例代码有一定的参考价值,有需要的朋友可以参考,那么接下来就跟随小编学习一下吧。
2022-02-09 17:57:13 
摘要:用PHP怎样实现7天内自动登录的功能?当我们登陆使用系统的时候,如果每次登陆都需要输入账号和密码,这就很不便利。对此这篇我们就来看看如何实现自动登录,并且限制时间是7天,这样既能确保一定的安全性,又提供了便利。
2022-01-10 18:37:26 
摘要:这篇文章我们来了解C语言switch嵌套和循环嵌套的使用,这是比较基础的知识内容,对新手学习C语言有一定的帮助,下文有很详细的介绍,有需要的朋友可以参考,接下来就跟随小编来一起学习一下吧!
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部