收藏
回答

防抖调不出呀,有熟悉debounce或者闭包的帮看一下吗?

网上弄了个debounce,配上之后完全不起作用,还是重复提交

debounce(func, wait) {
    let timer;
    return function() {
      let context = this; 
      let args = arguments; 
 
      if (timer) clearTimeout(timer);
 
      let callNow = !timer;
 
      timer = setTimeout(() => {
        timer = null;
      }, wait)
 
      if (callNow) func.apply(context, args);
    }
  },

  //事件函数
  submitForm(e) {
    this.debounce(this.submit, 1000)(e)
  },
  

  submit(e) {
  //这里还是重复执行呀
  }


代码片段:https://developers.weixin.qq.com/s/OWSCFUmP7njf

debounce的网上参考文档:https://www.cnblogs.com/cc-freiheit/p/10827372.html

回答关注问题邀请回答
收藏

1 个回答

  • 乐豆信息
    乐豆信息
    2020-08-28
    function debounce(func, wait) {
        let timer;
        return function() {
          let context = this// 注意 this 指向
          let args = arguments// arguments中存着e
             
          if (timer) clearTimeout(timer);
     
          timer = setTimeout(() => {
            func.apply(this, args)
          }, wait) 
        }
      }
    
    Page({
      submitForm(e) {
        this.submit(e)
      },
    
      submit: debounce(function (e){
    
      }, 1000)
    })
    


    debounce 要在声明函数时调用

    2020-08-28
    有用 2
    回复 1
    • 郑旭东
      郑旭东
      2020-08-28
      管用,谢啦。
      2020-08-28
      回复
登录 后发表内容
问题标签