uniapp异步执行问题记录

uniapp异步执行问题记录

代码执行过程中,调用其他函数,执行步骤异步执行

场景描述:

点击按钮向后台提交信息,所提交的信息中包含了图片信息,需要先将图片信息进行上传到后端,后端保存图片信息后返回图片存储的地址信息给前端,最后再执行提交信息操作。

问题描述:

uniapp中,在调用上传图片的函数时,代码不会等到调用的上传图片函数执行完成拿到图片的存储地址,而是直接继续执行,会造成数据为空取不到。

解决办法:

测试结果,网上教程描述说可以将异步执行的函数转成同步,实际测试无通过,程序依旧异步执行,未取到结果,有效性待定

				return new Promise((resolve, reject) => {  
					this.$refs.imgUpload.upload(res=>{
					   if(res.code==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=>{
				   if(res.code==0){
						//0为正常返回,将回调的线上图片数组 赋值给需要提交的表单里
						//res.urlArray 线上路径图片数组
						//TODO
						console.log(res.urlArray[0]);
						console.log(res.urlArray);
						let imgurl = res.urlArray.toString();
						console.log(imgurl);
						let a = imgurl.split(",");
						console.log(a[0]);
						
						//其他操作
						// uni.request({
                            // 	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{
						//用户没有上传图片的返回 code码为400
						
					}
				});
			}
posted @ 2020-08-11 17:24  STR少寒  阅读(2551)  评论(0编辑  收藏  举报