0
点赞
收藏
分享

微信扫一扫

JS 节流与防抖

夏天的枫_ 2022-03-20 阅读 63
javascript

防抖

用户触发事件,时间频繁,只处理最后一次事件的操作

举个例子,打印输入框输入的内容时,每次有内容 都会直接打印一次,而不是直接打印最终的结果。

​
<body>
<input type="text">
<script>
//打印输入框的内容
let inp = document.querySelector('input');
inp.oninput = function(){
  console.log(this.value)
}
</script>
</body>

​

而我们要做的防抖,就是要让他做到 直接打印最后的内容

函数防抖,借助setTimeout()函数,延迟执行需要执行的代码

<body>
<input type="text">
<script>
//打印输入框的内容
let inp = document.querySelector('input');
let tim = null;
inp.oninput = function(){
  if(tim !== null){
    clearTimeout(tim)
  }
 tim = setTimeout(()=>{
   console.log(this.value)
 },1000)
}
</script>
</body>

节流

节流 可以用于控制高频事件执行的次数

举个例子,在窗口滚动的时候,触发事件

 


<script>
//给body设置高度,出现滚动条 方便操作
document.body.style.height = '2000px';
//滚动时触发事件
window.onscroll = function(){
  console.log("hello world")
}
</script>

可以看到,从顶部滚动到底部打印了45次‘hello world’,我们可以通过节流,控制打印的频率

 

<script>
//给body设置高度,出现滚动条 方便操作
document.body.style.height = '2000px';
//滚动时触发事件
let flag = true;
window.onscroll = function() {
  if (flag) {
    setTimeout(() => {
      console.log("hello world")
      flag = true
    }, 500)
    flag = false
  }
}
</script>
举报

相关推荐

JS—节流与防抖

JS函数防抖与节流

js手写防抖与节流

js中的防抖与节流

节流与防抖

js防抖和节流

JS防抖节流函数

防抖与节流

0 条评论