const db = wx.cloud.database()
var imgurl1=""
var imgurl=[]
var urlArr=[]
var picurl=""
Page({
/**
* 页面的初始数据
*/
data: {
imgList: [],
index: null,
imgList1: [],
index1: null
},
createStudentSubmit(res){
var stuname = res.detail.value.stuname;
var stucontent = res.detail.value.stucontent;
var prise = res.detail.value.prise;
imgurl = this.data.imgList
imgurl1 = this.data.imgList1
this.cloudFile1(imgurl1[0])
imgurl.forEach((item,idx)=>{
var imgname = Date.now()+"_"+idx;
this.cloudFile(imgname,item)
})
var url=urlArr;
var pic=picurl;
console.log(stuname,stucontent,prise,pic,url)
},
cloudFile1(path){
wx.cloud.uploadFile({
cloudPath:Date.now()+".jpg",
filePath:path
}).then(res=>{
picurl=res.fileID
console.log(picurl)
})
},
cloudFile(imgname,path){
wx.cloud.uploadFile({
cloudPath:imgname+".jpg",
filePath:path
}).then(res=>{
urlArr.push(res.fileID)
if(imgurl.length==urlArr.length){
this.setData({
urlArr
})
}
wx.hideLoading()
})
},
ChooseImage1() {
wx.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType: ['album'],
success: (res) => {
this.setData({
imgList1: res.tempFilePaths
})
}
});
},
ChooseImage() {
wx.chooseImage({
count: 9,
sizeType: ['original', 'compressed'],
sourceType: ['album'],
success: (res) => {
if (this.data.imgList.length != 0) {
this.setData({
imgList: this.data.imgList.concat(res.tempFilePaths)
})
} else {
this.setData({
imgList: res.tempFilePaths
})
}
}
});
},
代码如上,解释一下,我定义了两个上传图片的函数,一个是只能上传一个图片(ChooseImage1(),cloudFile1(path),),一个是可以上传多个图片(ChooseImage(),cloudFile(imgname,path)),然后上传一个的会返回fileid(picurl),上传多个的会返回一个装有fileid的数组(urlArr),问题出现在函数createStudentSubmit里面,我想console一下打印出picurl和urlArr,urlArr打印出来了,但picurl一直是空,本以为是没传过来,于是在cloudFile1(path)里console了一下,没想到是有的,如下图:
但picurl不知道为什么会出现的比较慢,我希望它能够和urlArr一样,直接就能在createStudentSubmit里console显示出来,因为我还要把他们存到数据库里
初学者,写的很乱,希望大佬能帮帮我

建议了解下宏任务以及微任务
这个问题用async await 可以很方便的解决