<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>封装节流防抖函数</title>
</head>
<body>
<button>防抖</button>
<button>节流</button>
<script>
let btn1 = document.querySelectorAll('button');
btn1[0].addEventListener('click', async () => {
console.log(11111111);
await sleep1(2000)
console.log(2222222);
})
btn1[1].addEventListener('click', async () => {
console.log(3333333);
await sleep2(2000)
console.log(44444444);
})
let timer = null;
let flag = true;
let timer2 = null;
const sleep1 = (ms) => {
return new Promise((resolve, reject) => {
if (flag) {
flag = false;
timer = setTimeout(() => {
flag = true;
clearTimeout(timer);
timer = null;
resolve();
}, ms);
}
});
}
const sleep2 = (ms) => {
clearTimeout(timer2);
timer2 = null
return new Promise((resolve, reject) => {
timer2 = setTimeout(() => {
resolve();
}, ms);
});
}
</script>
</body>
</html>