收藏
回答

for 循环中使用 await 循环就执行了一次

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug uploadFile 客户端 7.0.5 2.7.5

- 当前 Bug 的表现(可附上截图)

把  let result= await promise; 它去掉就能执行循环了。我上传多张图,只能上传成功一次。for循环执行了一次

- 预期表现

我是想把异步变成同步,解决顺序问题

- 复现路径


- 提供一个最简复现 Demo

  chooseImage22:function(){

    var that = this;

    var user_id = wx.getStorageSync('userid');

    wx.chooseImage({

      count: 6, // 默认9

      sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有

      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有

      success: async function (res) {

        

        // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片

        //var tempFilePaths = res.tempFilePaths[0];

          var tempFilePaths = res.tempFilePaths;

          var imgs1 = that.data.imgs1;



          //console.log('tempFilePaths.length');

          //console.log(tempFilePaths.length);




          for (var i = 0; i < tempFilePaths.length; i++) {

              if (imgs1.length >= 6) {

                that.setData({

                  imgs1: imgs1

                });

                // return false;

              } else {

                //imgs1.push(tempFilePaths[i]);

              }

        }

        that.setData({

          imgs1: imgs1

        });



          console.log('tempFilePaths.length');

          console.log(tempFilePaths.length);



        for (var s = 0; s < tempFilePaths.length; s++) { 


              console.log('123654');


              let promise = new Promise((resolve,reject)=>{


                wx.uploadFile({

                  url: app.config.apiUrl + 'Api/Poster/uploadImage',

                  filePath: tempFilePaths[s],

                  name: 'image',

                  formData:{uid:user_id,s:s},

                  success: function (res) {

                    

                      console.log('abcccdddd');

                      console.log(res);


                    var st = JSON.parse(res.data);

                    console.log(st);


                    image = st.data;

                   var img_data = that.data.img_data;

                   var imgs1 = that.data.imgs1;


                    if (imgs1.length < 6){

                      

                      img_data.push(st.data.imgurl);

                      imgs1.push(app.config.apiDomain+st.data.imgurl);

                      

                   }


                   /*if(!that.data.ttpic){  //用户没有上传图片


                       that.setData({

                            ttpic:image

                       });


                   }*/



                    that.setData({

                      //mrpic: 'https://mp.00789.cn'+image,

                      img_data: img_data,

                      //ttpic: image, //选中的自定义转发图片

                      //pic: image

                      imgs1:imgs1

                    })


                       

                    

                  },

                  fail:function(){


                      console.log('uploadfile-fail');


                  }

                })


            });


            let result= await promise;


       }



        

      },

      fail: function (res) {

      },

      complete: function (res) {

      }

    });

  },


最后一次编辑于  07-18  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答