用户提交表单时,如何禁止重复点击?
接口请求时间不定,防抖没法用
下面是我目前想的方法,但很不合理,因为必须返回一个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)
})
})
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…