收藏
回答

求问

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=>{           }

})

}

})



},


最后一次编辑于  2018-12-12
回答关注问题邀请回答
收藏

1 个回答

  • 鸩
    2018-12-13

    wx.cloud.upload 是异步  想要之后再运行后面的代码 放upload 的success回调里

    2018-12-13
    赞同 1
    回复 4
    • 陈老师
      陈老师
      2018-12-13

      谢谢大牛 ,但是我把写数据库的代码,放在wx.cloud.uploadl里,有for循环操作,会重复写数据库,怎么办呢?我的想法是上传图片后,获取一个数组,然后再把图片数组一同写进数据库当中,请大牛指教,谢谢!

      2018-12-13
      回复
    • 鸩
      2018-12-13回复陈老师

      你这是循环上传图片? 在success的时候判断当前循环了第几次  pics.length 在写数据库

      2018-12-13
      回复
    • 陈老师
      陈老师
      2018-12-13回复

      谢谢 大牛,厉害,明白你的意思了,感谢!

      2018-12-13
      回复
    • (@-@)
      (@-@)
      04-02回复

      这还是会存在异步的情况啊,上传9张图,最后一次add,结果表里面只有4,5个fileID

      04-02
      回复