请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我觉得防抖和节流直接上 Promise 版会更易于理解

//防抖 Promise 版
function debounce(fn, delay = 500) {
  let timer = null
  return (...args) => {
    clearTimeout(timer)
    return new Promise((resolve) => {
      timer = setTimeout(() => {
        resolve(fn(...args))
      }, delay)
    })
  }
}
// 节流 Promise 版
function throttle(fn, delay = 100) {
  let timer = null
  return (...args) => {
    if (timer) {
      return
    }
    return new Promise((resolve) => {
      timer = setTimeout(() => {
        resolve(fn(...args))
        timer = null
      }, delay)
    })
  }
}

没有了 this,更易于理解。讨厌的 this (逃

正在回答 回答被采纳积分+3

插入代码

1回答

双越 2020-06-23 21:39:13

这样也可以。赞!

0 回复 有任何疑惑可以回复我~
  • 老师,这里使用promise有什么作用吗?感觉不使用也可以呀。这里也不需要.then呀?
    function throttle(fn, delay = 100) {
      let timer = null
      return (...args) => {
        if (timer) {
          return
        }
        timer = setTimeout(() => {
          fn(...args) 
          timer = null
        }, delay)
      }
    }
    这样写我测试无论是功能还是this指向都没问题
    回复 有任何疑惑可以回复我~ 2021-03-20 00:39:29

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号