加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
14-手写防抖.html 1.75 KB
一键复制 编辑 原始数据 按行查看 历史
wangcai 提交于 2023-04-04 16:49 . xx‘
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/underscore@1.13.4/underscore-umd-min.js"></script>
</head>
<body>
<!--
防抖: 将多次执行函数变成最后⼀次执行 等待固定时间还没有事件触发时执行的函数
应用场景:
按钮的点击
屏幕滚动时的复杂计算
输⼊框输⼊时进行搜索
用户缩放浏览器的resize事件
简单的防抖函数实现:
-->
<input type="text">
<script>
function mldebounce(fn, delay) {
// 用于记录上一次事件触发的timer
let timer = null;
const _debounce = () => {
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
fn();
timer = null;
}, delay)
}
return _debounce;
}
</script>
<script>
// 1.获取input元素
const inputEl = document.querySelector("input")
// 2.监听input元素的输入
// let counter = 1;
// inputEl.oninput = function () {
// console.log(`发送网络请求${counter++}`);
// }
// 做防抖处理
// let counter = 1;
// inputEl.oninput = _.debounce(function () {
// console.log(`发送网络请求${counter++}`);
// }, 3000)
// 调用自己的debounce
let counter = 1;
inputEl.oninput = mldebounce(function () {
console.log(`发送网络请求${counter++}`);
}, 3000)
</script>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化