【发布时间】:2019-11-03 07:39:06
【问题描述】:
目标——
向输入添加实时验证,只有验证的 XHR 部分被去抖动。
问题——
将debounce 添加到valueExists() 会破坏await。没有debounce,它是正确的awaits。
应该如何处理?
methods: {
async validate () {
let local_errors = [];
if (!!this.value && !this.$data.alpha_dash.test(this.value)) {
local_errors.push('Invalid character');
}
if (!!this.value && await this.valueExists()) {
local_errors.push('Already used');
}
return local_errors;
},
valueExists: _.debounce(function () {
return axios.get(route('organization.slug.exists', { slug: this.value }))
.then(response => {
return false;
})
.catch(error => {
return true;
});
}, 1000)
}
【问题讨论】:
-
那么,当去抖击中时,您希望
valueExists返回什么? -
promise 解决后的布尔值。
-
去抖通过not调用函数来工作。那么你指的是哪个承诺?
-
你使用哪个库来实现
debounce方法,Underscore?罗达什? -
lodash docs 说“对去抖动函数的后续调用返回最后一次 func 调用的结果。”但默认情况下,函数在后沿调用- 所以在最初的几个电话中根本没有任何承诺。
标签: javascript promise vuejs2 lodash debounce