前端element ui中表单的validate方法是同步还是异步

196 阅读1分钟

element ui中表单的validate方法如果是同步的话,在他的回调函数中抛出一个异常,外层的try..catch应该是可以捕获到的,但是实际上try..catch并不能捕获到异常,如果validate方法异步的话,那在validate方法之后的代码应该早于validate中的回调函数中的代码行,但是实际上却是晚于回调函数中的代码行执行,这种互相矛盾的现象要怎么解释?

        <xui-form ref="queryFormA8" :model="queryDataA8" label-width="150px" :rules="formRules">
            <xui-col :span="8">
                <xui-form-item label="我是A" prop="name">
                    <xui-input v-model="queryDataA8.name" clearable></xui-input>
                </xui-form-item>
            </xui-col>
        </xui-form>
    formRules: { name: [{ required: true, trigger: 'blur' }] },
      console.log(1);
      try {
        this.$refs['queryFormA8'].validate(valid => {
          console.log(2);
          if (!valid) {
            throw new Error('异常被捕获了');
          }
        });
      } catch (error) {
        console.log(error);
      }
      console.log(4);

这段代码的执行结果是1234;

      console.log(1);
      try {
        this.$refs['queryFormA8'].validate(valid => {
          console.log(2);
          if (!valid) {
            console.log(3);
          }
        });
      } catch (error) {
        console.log(error);
      }
      console.log(4);

这段代码的执行结果是123