许学德 2019-06-27
在短时间多次触发某个函数的场景下,对执行函数进行节流,节省无效浪费
1. 使用场景

export function debounce(fun, delay){
  let timer //定时器
  
  return function (...args){
    if (timer) {
      clearTimeout(timer)
    }
    timer = setTimerout(() => { // 
      fun.apply(this, args)
    }, delay)
  }
}注:代码来源vue-music音乐播放器项目
2. 函数调用
this.$watch(
  "query",
  debounce(newQuery => {
    // 不超过200ms函数节流
    this.$emit("query", newQuery);
  }, 200)
);this.$emit("query", newQuery);前给函数加个节流函数
3. 误区