使用Promise解决批量上传图片返回顺序问题


使用背景:多张图片调用图片上传接口时,先上传的图片接口返回顺序可能在后面。
解决方法:使用Promise异步执行

1. 图片预上传回调方法–先压缩图片质量再调用上传服务器接口

      afterRead(files) {
        const _this = this
        // 单张图片
        if (files.file) {
          new Compressor(files.file, {
            quality: 0.6,//压缩质量
            success(result) {
              const newFile = result
              let formData = new FormData()
              formData.append('file', newFile, newFile.name)
              request(
                {
                  method: 'post',
                  url: 'http://**',
                  data: formData
                })
                .then((response) => {
                  const obj = {}
                  obj.url=response.result
                  _this.form.photos.push(obj)
                })
                .catch(function (error) {
                  console.log(error)
                })
            }
          })
        } else {
          // 多张图片
          let PromiseArr = files.map((item, index) => {
            return this.handleUpload(item, index)
          })
          Promise.all(PromiseArr).then(value => {
            // console.log(value)
            _this.form.photos = _this.form.photos.concat(value)
          })
        }
      },

2. 定义多张图片上传Promise

      handleUpload(item, index) {
        return new Promise(((resolve, reject) => {
          new Compressor(item.file, {
            quality: 0.6,//压缩质量
            success(result) {
              const formData = new FormData();
              formData.append('file', result, result.name);
              request(
                {
                  method: 'post',
                  url: 'http://**',
                  data: formData
                })
                .then((response) => {
                  // console.log(response)
                  let str = response.result
                  resolve(str)
                })
                .catch(function (error) {
                  console.log(error)
                })
            }
          })
        }))
      },
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

trabecula_hj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值