vue watch监听验证码时,axios延迟发送post请求。
程序员文章站
2022-04-15 16:50:38
标题写的全面一些,方便其他人检索,我就是找了半天找不到资料,最后自己搞定了。 原理: 每次监听到输入值变化,就打一个时间戳,然后暂停2秒再去提交post验证。 但是每次提交前,判断一下之前打的时间戳和现在时间是否大于2秒,如果大于,则真去提交post,否则return掉不执行。 以下是代码片段: ......
标题写的全面一些,方便其他人检索,我就是找了半天找不到资料,最后自己搞定了。
原理:
每次监听到输入值变化,就打一个时间戳,然后暂停2秒再去提交post验证。
但是每次提交前,判断一下之前打的时间戳和现在时间是否大于2秒,如果大于,则真去提交post,否则return掉不执行。
以下是代码片段:
data () {
return {
captchainputlasttime:null,
}
watch: {
// 监听验证码变化
'formdata.captcha': async function(newval){
var delay = 2000;//延迟2000 毫秒执行
this.captchainputlasttime = (new date()).valueof();
await this.$root.sleep(delay);
var nowtime = (new date()).valueof();
var gap = nowtime - this.captchainputlasttime;
if( gap < delay){
return
}
axios.post。。。。。执行验证逻辑。
}
methods: {
sleep (ms = 1000) {
return new promise((resolve)=>settimeout(resolve,ms));
},
}