防抖、节流

1.防抖

function debounce(fn, wait) {
    let timer = null; //注意点1:借助闭包
    return function (...args) {
      if (timer) clearTimeout(timer); //注意点2:清除定时器
      timer = setTimeout(() => {
        fn.apply(this, args) //注意点3:setTimout会发生this隐式丢失;改变this指向为调用debounce所指的对象。
      }, wait)
    }
  }



2.节流

function throttle(func, delay) {
  let run = true
  return function () {
    if (!run) {
      return  // 如果开关关闭了,那就直接不执行下边的代码
    }
    run = false // 持续触发的话,run一直是false,就会停在上边的判断那里
    setTimeout(() => {
      func.apply(this, arguments)
      run = true // 定时器到时间之后,会把开关打开,我们的函数就会被执行
    }, delay)
  }
}


全部评论

相关推荐

10-22 12:03
山东大学 Java
程序员小白条:26届一般都得有实习,项目可以随便写的,如果不是开源社区的项目,随便包装,技术栈也是一样,所以本质应该找学历厂,多投投央国企和银行,技术要求稍微低一点的,或者国企控股那种,纯互联网一般都得要干活
应届生简历当中,HR最关...
点赞 评论 收藏
分享
10-17 23:18
已编辑
西北农林科技大学 Web前端
独行m:给25可以试试,但他只能给12,那就是纯纯的事精
秋招,不懂就问
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务