收藏
回答

wx.uploadfile 使用for循环发生异步提交怎么解决?

var zhi = that.data.inputlist.length - 1;

for(var j=0; j<zhi; j++){

debugger

var pics = that.data.inputlist[j].img;

wx.uploadFile({

url: bbsUrl + '?op=-1&mid=' + wx.getStorageSync('mid'),

filePath: pics[j],

name: 'fileData',

dataType: 'json',

formData: null,

method: 'POST',

success: function (resp) {

console.log("1234567897899" + resp);

}

});

}


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

4 个回答

  • 马乾
    马乾
    09-11

    promise了解一下

    09-11
    赞同 1
    回复 2
    • 被淹死的鱼
      被淹死的鱼
      09-11
      我的不是多图上传,而是循环多图上传,因为使用了for只执行最后一个前面的发生异步直接跳过没有走完代码直接结束
      09-11
      回复
    • 马乾
      马乾
      09-11回复被淹死的鱼

      upLoadImage: (imageList) => {

      wx.showLoading({

      title: '加载中',

      })

      let num = 0;

      let fileUpload = new Array();

      return new Promise(function(resolve, reject) {

      for (let i = 0; i < imageList.length; i++) {

      wx.uploadFile({

      url: basepath + "*    **/***",

      filePath: imageList[i],

      name: 'uploadify',

      success: function(res) {

      let data = res.data;

      data = JSON.parse(res.data);

      fileUpload.push(data.path);

      if (num == imageList.length - 1) {

      resolve(fileUpload);

      }

      num += 1;

      }

      })

      }

      });

      }

      我是这样写的你看看

      09-11
      1
      回复
  • 🇻 🇰 🇮 🇳 🇬ʷᵃⁿᵍ
    🇻 🇰 🇮 🇳 🇬ʷᵃⁿᵍ
    09-11

    如果非得要按顺序传 promise await async了解下,编辑器增强编译打开,就可以支持这些关键字;

    一般批量上传是允许异步的,这样更快,上传时做个标识(j),上传完成根据标识放入数组

    09-11
    赞同 1
    回复 3
    • ,
      09-11
      你说 这个编辑器增强编译在哪打开? 这个线上也直接能用吗
      09-11
      回复
    • 🇻 🇰 🇮 🇳 🇬ʷᵃⁿᵍ
      🇻 🇰 🇮 🇳 🇬ʷᵃⁿᵍ
      09-12回复


      09-12
      回复
    • ,
      09-12
      哦 好的 编辑器没有更新 谢谢了
      09-12
      回复
  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    09-11

    递归上传

    imgPaths 待上传的所有图片路径数组

    currentIndx 当前要上传的图片数组下标,从0开始


    oneUpload: function(imgPaths, currentIndx){

        var t = this

        console.log('正在上传第' + (currentIndx + 1) + '张图片')

        wx.uploadFile({

            //...

            filePath: imgPaths[currentIndx],

            success: function (res) {

                console.log('第' + (currentIndx + 1) + '张图片上传成功')

                // 判断是否还有需要上传的图片

                if (currentIndx + 1 < imgPaths.length) {

                    // 继续上传下一张图片

                    t.oneUpload(imgPaths, currentIndx + 1)

                } else {

                    console.log('所有图片上传成功')

                }

            },

            fail: function (res) {

                console.log('第' + (currentIndx + 1) + '张图片上传失败')

            }

        })

    }


    09-11
    赞同
    回复
  • 米法(BINNIE SMILE)
    米法(BINNIE SMILE)
    09-11

    用递归

    09-11
    赞同
    回复 4
    • 被淹死的鱼
      被淹死的鱼
      09-11
      好的谢谢我试试
      09-11
      回复
    • 被淹死的鱼
      被淹死的鱼
      09-11
      有没有递归的相关代码
      09-11
      回复
    • 米法(BINNIE SMILE)
      米法(BINNIE SMILE)
      09-11回复被淹死的鱼
      https://www.cnblogs.com/xjwy/p/6956120.html
      09-11
      回复
    • 被淹死的鱼
      被淹死的鱼
      09-11回复米法(BINNIE SMILE)
      我的不是多图上传,而是循环多图上传,因为使用了for只执行最后一个前面的发生异步直接跳过没有走完代码直接结束
      09-11
      回复
问题标签