uniapp异步执⾏问题记录
uniapp异步执⾏问题记录
代码执⾏过程中,调⽤其他函数,执⾏步骤异步执⾏
场景描述:
点击按钮向后台提交信息,所提交的信息中包含了图⽚信息,需要先将图⽚信息进⾏上传到后端,后端保存图⽚信息后返回图⽚存储的地址信息给前端,最后再执⾏提交信息操作。
问题描述:
uniapp中,在调⽤上传图⽚的函数时,代码不会等到调⽤的上传图⽚函数执⾏完成拿到图⽚的存储地址,⽽是直接继续执⾏,会造成数据为空取不到。
解决办法:
使⽤
测试结果,⽹上教程描述说可以将异步执⾏的函数转成同步,实际测试⽆通过,程序依旧异步执⾏,未取
到结果,有效性待定
return new Promise((resolve, reject) => {
this.$refs.imgUpload.upload(res=>{
de==0){
//0为正常返回,将回调的线上图⽚数组赋值给需要提交的表单⾥
//res.urlArray 线上路径图⽚数组
//TODO
console.log(res.urlArray[0]);
console.log(typeof(res));
that.imgUrl = res.urlArray;
resolve(res);
}else{
//⽤户没有上传图⽚的返回 code码为400
reject("error");
}
});
})
函数回调
将执⾏上传的函数写到⼀个函数中,在上传图⽚的函数执⾏完成后,在其中接着写其他的数据提交操作,实际测试可⾏,不过代码简洁性性不⾼,耦合过⾼。
btn_submit(){
uni.showModal({
content: "姓名:"+this.name+",性别:"+this.sex,
showCancel: false
});
// this.submit();
this.$refs.imgUpload.upload(res=>{
de==0){
//0为正常返回,将回调的线上图⽚数组赋值给需要提交的表单⾥
//res.urlArray 线上路径图⽚数组
//TODO
console.log(res.urlArray[0]);
console.log(res.urlArray);
let imgurl = String();
console.log(imgurl);
let a = imgurl.split(",");
console.log(a[0]);
//其他操作
// quest({
// url:this.$baseUrl.baseUrl+"Wxtest/getForm",
// methods:"POST",
// data:{
// name:this.name,
// sex:this.sex,
// birth:this.birth,
/
/ dircript:this.discript
// },
// success:(res)=>{
// console.log("success:"+res.data.name);
// },
// fail:(res)=>{
// console.log("错误") // }
// })
}else{uniapp 字符串转数组
//⽤户没有上传图⽚的返回 code码为400 }
});
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论