实现函数防抖的函数

function debounce(callback, delay) {

      return function () {

       

        // 保存thisarguments

        const that = this

        const args = arguments

        

        // 清除待执行的定时器任务

        if (callback.timeoutId) {

          clearTimeout(callback.timeoutId)

        }

        // 每隔delay的时间, 启动一个新的延迟定时器, 去准备调用callback

        callback.timeoutId = setTimeout(function () {

          callback.apply(that, args)

          // 如果定时器回调执行了, 删除标记

          delete callback.timeoutId

        }, delay)

      }

    }

 

 

  function handleClick(aaa){

    console.log(aaa)

  }

  

    // onclick需要赋值一个函数,而该写法为立即执行
      // document.getElementById('debounce').onclick = debounce(handleClick,2000)('aaaa')
 
      //正确写法
  document.getElementById('debounce').onclick =function(){
      debounce(handleClick,2000)('aaaa')
  } 

 

posted @ 2020-06-23 17:32  孙同学你好  阅读(107)  评论(0编辑  收藏  举报