formSubmit: function (event) {
var pics = this.data.pics;
console.log(pics);
var piccloud=[];
for (var i = 0; i<pics.length;i++){
var picid = Math.random();
console.log(picid)
var pic=pics[i];
console.log(pic);
wx.cloud.uploadFile({
cloudPath: picid+'.png',
filePath: pic, // 小程序临时文件路径
success: res => {
piccloud.push(res.fileID)
console.log(piccloud)
// get resource ID
// picloud[i]=res.fileID
},
fail: err => {
}
})
console.log(piccloud);
}
》》》》》》为什么这后面的的代码,在wx.cloud.upload之前就执行了呢?
console.log(100)
var that=this;
var db=wx.cloud.database();
db.collection('test').add({
data:{
title: event.detail.value.title,
content: event.detail.value.content,
photo: piccloud
},success:res=>{
console.log(100000)
wx.showToast({
title: '发布成功', icon: 'success',
});
//发布成功后,返回首页,注意道js文件要../返回到first页面
wx.reLaunch({
url: "../first/first",sucess:res=>{ }
})
}
})
},
wx.cloud.upload 是异步 想要之后再运行后面的代码 放upload 的success回调里
谢谢大牛 ,但是我把写数据库的代码,放在wx.cloud.uploadl里,有for循环操作,会重复写数据库,怎么办呢?我的想法是上传图片后,获取一个数组,然后再把图片数组一同写进数据库当中,请大牛指教,谢谢!
你这是循环上传图片? 在success的时候判断当前循环了第几次 pics.length 在写数据库
谢谢 大牛,厉害,明白你的意思了,感谢!
这还是会存在异步的情况啊,上传9张图,最后一次add,结果表里面只有4,5个fileID