收藏
回答

我想做一个上传图片返回fileid?但是上传一张图片时id返回的总是会慢,如何解决

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显示出来,因为我还要把他们存到数据库里

初学者,写的很乱,希望大佬能帮帮我



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

1 个回答

  • 有赞
    有赞
    2022-03-21

    建议了解下宏任务以及微任务

    这个问题用async await 可以很方便的解决

    2022-03-21
    有用
    回复
登录 后发表内容