将异步验证结果Vuevalidate到循环

Geo*_*off 7 vue-validator vuejs2

我正在使用Vue验证

我的vuevlidate中有以下内容

      validations: {
        user_form: {
            email: {required,email, isUnique(value) {
                    // standalone validator ideally should not assume a field is required
                    if (value === '') return true;
                    // simulate async call, fail for all logins with even length
                    return new Promise((resolve, reject) => {
                       this.$http.post("v1/user-management/users/email-registeredi",{email:value}).then((res)=>{
                            console.log("res is ", res);
                            resolve(true);
                        },(err)=>{
                            reject(false)
                        })
                    })
                }},
            role: {required},
            password: {required}
        }
    },
Run Code Online (Sandbox Code Playgroud)

上面创建了一个无限循环的http请求,尤其是当它收到错误时

我哪里错了

Hel*_*and 0

如果 vue validate 不能很好地处理拒绝承诺并创建无限循环。对于 Vue validate 的isUnique,
您可以尝试使用 try 和 catch在错误时返回, 类似这样。async awaitfalse

validations: {
 user_form: {
  email: {
    required,
    email,
    async isUnique (value) {
        if (value === '') return true
        try{
          const response = await this.$http.post("v1/user-management/users/email-registeredi",{email:value})
          return true;
        }
        catch(e){
          return false;
        }   
      }
   }
 }
Run Code Online (Sandbox Code Playgroud)