ES6之防抖节流

554 阅读1分钟
个人学习笔记,欢迎大佬们纠错
// 防抖
function debounce(fun, delay) {
  let timer = null
  return (...rest) => {
  clearTimeout(timer)
  timer = setTimeout(() => {
    fun.apply(this, rest)}, delay)
}

function test(a, b) {
  console.log(a, b)
}

let fun = debounce(test, 1000)
fun(1, 2)

// 节流
// 1.时间戳
function throttle(fun, delay) {
  let start = 0
  return (...rest) => {
    let end = + new Date()
    if (end - start >= delay) {
      fun.apply(this, rest)
      start = end
    }
  }
}
// 2.计时器
function throttle(fun, delay) {
  let isActived = false;
  return (...rest) => {
    if (!isActived) {
      fun.apply(this, rest)
      isActived = true
      setTimeout(()=> isActived = false, delay)
    }  
  }
}

function test(a, b) {
  console.log(a, b)
}

let fun = throttle(test, 2000)
fun(1, 2)