js 防抖和节流

461 阅读1分钟
  • 防抖:动作绑定事件,动作发生后一定时间后触发事件,在这段时间内,如果该动作又发生,则重新等待一定时间再触发事件。

  let timeout = null
  export function debounce(fn, wait = 500) {
    if (timeout !== null) clearTimeout(timeout)
    timeout = setTimeout(()=>{fn()}, wait)
  }
  • 节流: 动作绑定事件,动作发生后一段时间后触发事件,在这段时间内,如果动作又发生,则无视该动作,直到事件执行完后,才能重新触发

  let throttleStatus = false
  export function throttle(fn, wait = 500) {
    if (throttleStatus) return;
    throttleStatus = true;
    fn()
    // setTimeout(fn, wait)
    setTimeout(() => {
      throttleStatus = false;
    }, wait)
  }
  • 调用

import {debounce,throttle} from '@/utils';
***
fn(){
	//***这里的this是指向了当前页
}
debounce(this.fn,1000) //防抖
throttle(this.fn)  //节流