JavaScript防抖与节流
2023-12-29 22:33:29
以监听输入表单和鼠标移动事件为例,使用闭包实现。(也可以通过时间戳实现)
应用场景:提交表单,高频监听事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input placeholder="请输入">
<div id="box"></div>
<script>
// 提交表单
let getInput = document.querySelector('input')
getInput.addEventListener('input', antiShake(demo, 2000))
function antiShake(fn, wait) {
let timeOut = null
return args => {
if (timeOut) clearTimeout(timeOut)
timeOut = setTimeout(fn, wait)
}
}
function demo() {
console.log('发起请求');
}
// 高频监听事件
let box = document.querySelector('#box')
box.addEventListener("mousemove",throttle(demo,2000))
function throttle(event,time){
let timer = null
return function(){
if(!timer){
timer = setTimeout(()=>{
event()
timer = null
},time)
}
}
}
</script>
</body>
<style>
#box {
background-color: aqua;
width: 200px;
height: 200px;
}
</style>
</html>
节流:一定时间内的多个事件合为一个
防抖:固定时间内,事件只允许发生一次
文章来源:https://blog.csdn.net/qq_62939177/article/details/135238883
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!