收藏
回答

wx.cloud.uploadFile异步上传图片需要获取返回的id才能进行下一步,该怎么做?

因为需要上传一组照片,然后将单个上传函数封装

  upload:function(filePath,index){}

addcommodity:async function(e)

调用过程如下

    for(let index=0;index<that.data.img_src.length;index++)

    {

      await that.upload(that.data.img_src[index],index)

    }

await db.collection('xxx').add({})

在上传过程中想要实现的是上传完成之后,获取返回的文件id再将其用到下一步,遇到的问题是由于异步(我以为async/await可以解决,但是并没有),函数执行完之后(第二个await已经结束)才执行上传文件,所以函数并没有获得上传文件的id,应该怎么解决呢?




回答关注问题邀请回答
收藏

2 个回答

  • Why not?
    Why not?
    2020-02-01

    你封装的upload返回的是不是Promise?

    2020-02-01
    有用
    回复 2
    • 知行合一
      知行合一
      2020-02-01
      是promise,现在我直接不封装了,用promise把上传函数和写到一起,现在解决了。谢谢解答
      2020-02-01
      回复
    • 些微思人
      些微思人
      2020-02-24
      您好,我也遇到类似问题,您是如何解决的可以说得更清楚一点吗
      2020-02-24
      回复
  • Mr.Zhao
    Mr.Zhao
    2020-01-31

    用递归函数实现

    2020-01-31
    有用
    回复 8
    • 知行合一
      知行合一
      2020-01-31
      您指的是把上传过程用递归实现吗
      2020-01-31
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-01-31回复知行合一
      是的
      2020-01-31
      回复
    • 知行合一
      知行合一
      2020-01-31回复Mr.Zhao
      好的,我试试。
      2020-01-31
      回复
    • 知行合一
      知行合一
      2020-01-31
      您好,我在测试的时候,不知道是不是我写错了哪里,我的写法把upload函数写成递归函数,可以不用for循环了,将图片数组传进函数,用await调用函数,函数递归上传了图片,await还是没有用,所有的图片上传还都是在最后才上传。第二个await还是得不到返回数据
      2020-01-31
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-01-31回复知行合一
      不需要用await了,你代码写错了
      2020-01-31
      回复
    查看更多(3)
登录 后发表内容
问题标签