前端 - js - - 防抖和节流

1、防抖

短时间内重复执行相同操作时 只执行最后一次 

常见场景:浏览器输入文字后 下面会有模糊提示

前端 - js - - 防抖和节流_第1张图片

实现思路:延时器控制事件在几秒后执行 每次触发事件时都会重置延时器

const fn = () => {
  // 先定义timeout 避免第一次触发时clearTimeout报错
  let timeout;

  // 每次触发事件 重置延时器
  clearTimeout(timeout)
  
  // 规定一秒后再执行
  timeout = setTimeout(()=>{
    // 需要执行的操作
    // ...
  },1000)
}

2、节流

规定时间内只执行一次 

常见场景:某一按钮点击后会添加dom节点 避免用户短时间内点击多次消耗浏览器性能

实现思路:开关控制事件是否执行 延时器控制开关是否打开

let flag = true // 开关

const fn = () => {
  // 如果此操作在一秒内重复触发 就阻止执行
  if(!flag) return

  // 触发此操作时 将开关关闭 阻止第二次执行
  flag = false

  // 需要执行的操作
  // ...

  // 一秒后将开关打开
  setTimeout(()=>{
    flag = true
  },1000) 
}

你可能感兴趣的:(vue.js,前端,javascript)