表单验证的时候return失效了

我在正则中用接口去判断输入地址是否正确,正确的话可以选择物品否则就选择不了,但是现在有一个问题,是在地址正确的时候选好物品,然后删除掉地址随便输入一个错误的东西,虽然此时code不为0并且弹出了错误,但是代码没return还是执行了下去并提交了,请问要怎么解决?

//地址正则
                var orderAddress = (rule, value, callback) => {
                    if (value == '') {
                        this.disableStop = true;
                        return callback(new Error('请填写地址'))
                    } else if (/^([\\u4e00-\\u9fa5]{1,20}|[a-zA-Z\\.\\s]{1,20})$/.test(value)) {
                        return callback(new Error('请填写汉字'))
                    } else {
                        this.$http.get(`site/distrPriceLIst/address`, {
                            params: {
                                address: value
                            }
                        }).then(({
                            data: res
                        }) => {
                            if (res.code !== 0) {
                                return this.$message.error(res.msg)
                            }else{
                            this.dataForm.regionId = res.data.regionId
                            this.dataForm.distrPrice = res.data.distrPrice
                            this.disableStop = false;
                            }
                        }).catch(() => {})
                    }
                    callback()
                }

img


会弹出地址不在区域内但是还是会执行

img

请求默认是异步的,所以会直接执行后续的语句
解决方案:
把return callback(new Error.....)放到请求返回处理中,注意catch中也做处理

callback放到请求的then方法里