// 提交前的验证
validForm() {
this.$refs.ruleForm.validate((valid) => {
if (valid) {
let _this = this
async function getResult(){
let p1 = new Promise(function(resolve,reject){
//调用上传子组件的异步上传文件方法
_this.$refs.multipleUpload.submitUpload()
resolve(true)
})
await p1.then(res=>{
if(res){
_this.$emit('saveForm', _this.forms)
}
})
}
getResult()
} else {
return false
}
})
},
以上代码需要先执行子组件的上传方法后,this.forms数据才能完整。我需要先上传文件后,再将forms数据进行提交。请问代码有什么问题导致forms中的已上传文件并没有拿到?谢谢了。
async/await机制我也不是太明白,还特意去看了看相关介绍
看后觉得你这段代码很可能问题
let p1 = new Promise(function(resolve,reject){
//调用上传子组件的异步上传文件方法
_this.$refs.multipleUpload.submitUpload()
resolve(true)
})
因为getResult被定义为async异步,其本质会返回一个promise
然后你又在里面new一个Promise,貌似有嵌套了。
直接return上传结果试试
async function getResult() {
let p1 = await _this.$refs.multipleUpload.submitUpload();
console.log(p1);
return p1
}
let result = getResult();
result.then(...);