element-ui表单校验

写好表单校验所有的校验规则以后,首次校验一直是成功的,但是修改一个参数后校验就失败,promise回调一直是pending状态。

排查后发现,是在校验规则中使用了setTimeOut导致的,setTimeOut后再callback(),就造成了校验返回的peomise一直是pending状态无法获取成功或者是失败的返回。

因为promise是new出来后就马上执行的,初步猜想如果在校验规则中进行异步操作就会发生这样的事情:

执行到setTimeOut,因为是异步操作,跳过,此时还没有进行callback回调;

然后继续向下,校验规则返回了promise,因为没有callback,所以此时的promise是没有执行完毕的还是执行中的状态,所以是pending;

最后setTimeOut结束,执行callback,因为promise已经执行了,所以此时状态就还是pending,无法修改。

具体原因留待以后查阅源码

 

posted @ 2020-06-23 17:28  骚年上天不?  阅读(435)  评论(0编辑  收藏  举报