Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.7k views
in Technique[技术] by (71.8m points)

禁止手动重复提交表单

用户提交表单时,如何禁止重复点击?
接口请求时间不定,防抖没法用
下面是我目前想的方法,但很不合理,因为必须返回一个promise
又不想额外创建一个变量用来标记,有没有什么好的方法?

function awaitRequest(fn) {
  let isLoading = false
  return async function() {
    if (isLoading) return
    isLoading = true
    fn && (await fn.apply(this, arguments))
    isLoading = false
  }
}
btn.onclick = awaitRequest(function(e) {
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log('request is over')
      resolve()
    }, 5000)
  })
})

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

我觉得你的方法就很好,通用,我做过类似处理:https://ostack.cn/a/11...


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...