小程序chooseImage返回的图片数组不是按点选顺序

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

使用wx.chooseImage上传多张图片,返回的数组不是按照点选的顺序返回

   wx.chooseImage({
        count: l,
        sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
        sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
        success: function (res) {
          // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
          var tempFilePaths = res.tempFilePaths;
          var nowTime = util.formatTime(new Date());
          var len = res.tempFilePaths.length;
          //支持多图上传
          for (var i = 0; i < res.tempFilePaths.length; i++) {
            //上传图片
            //你的域名下的/cbb文件下的/当前年月日文件下的/图片.png
            //图片路径可自行修改
            uploadImage(res.tempFilePaths, 'cbb/' + nowTime + '/',
              function (result) {
                console.log("上传成功图片地址为", result);
                wx.hideLoading()
              },
              function (result) {
                // console.log("======上传失败======", result);
                wx.hideLoading()
              }
            )
          }
        }
      })
  • 预期表现

按照点选的顺序返回对应的数组

  • 复现路径

点选顺序 3.png 1.png 2.png ,返回的数组是 1.png 2.png 3.png对应的图片

现在亲测试上传到阿里云oss是根据图片大小返回 for渲染之后会请求三次然后看上传成功之后以最快速度返回。
这样不符合产品的需求
请问我怎么做?

阅读 2.4k
1 个回答

使用rxjs

forkJoin([uploadImage(xx1),uploadImage(xx2)..]).subscribe(results=>{
  console.log(results);
})

uploadImage也要改一下

uploadImage(){
 return Observable.create(observer=>{
   // 具体业务
   observer.next(成功返回结果);
   observer.complete();
 },err=>{observer.error()});
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题