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
						
					}
				});
			}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM