上一篇基于vue axios用户注册重复校验的问题(一)中,通过async,await关键字解决异步请求返回值时间问题后,点击注册按钮提交表单信息会发现存在另一个问题,无论用户查重结果如何,都能通过注册,数据库表中出现重复信息
立马反应到checkUsername()中的返回值并没有真正返回,代码如下
checkRegist()中先禁止表单提交,添加如下几行代码,把checkUsername()的返回值打印出来看看:
输出结果是一个object promise对象
查阅资料后得知这个对象是js中异步操作的返回结果,是async关键字导致,在then回调函数中我们无法直接获得想要的返回值(true或false),现在的问题是同步请求无法正确返回值,异步请求也无法在合适的时机获取应有的值,那么如何做账户注册的校验?解决办法如下:
1)新增一个usernameFlag属性
2)回调函数中对其操作
3)通过外部属性值做判断
完美解决问题