Promise的循环用法

用到Promise的静态方法Promise.resolve();
返回值是一个Promise对象

var promise1 = Promise.resolve(123);

promise1.then(function(value) {
  console.log(value);
  // 输出: 123
});

微信小程序生成图片需要先把图片下载
没有循环之前我是这么做的

// 把网络图片改成临时路径
  downLoadImg: function (imgPathArr, fn) {
    console.log("开始下载图片")
    new Promise((resolve, reject) => {
      wx.downloadFile({
        url: imgPathArr[0],
        success: function (res) {
          let arr = [];
          console.log("第1张图片下载完成")
              resolve(arr)
            },
          })
        }
      })
    }).then((arr) => {
      return new Promise((resolve, reject) => {
        wx.downloadFile({
          url: imgPathArr[1],
          success: function (res) {
            arr.push({path:res.tempFilePath})
            console.log("第2张图片下载完成")
            resolve(arr)
          }
        })
      })
    }).then((arr) => {
      return new Promise((resolve, reject) => {
        wx.downloadFile({
          url: imgPathArr[2],
          success: function (res) {
            arr.push({path:res.tempFilePath})
            console.log("第3张图片下载完成")
            resolve(arr)
          }
        })
      })
    }).then((arr) => {
      fn && fn(arr);
    })
  },

使用循环我是这么做的

// 把网络图片改成临时路径
  downLoadImg: function (imgPathArr, fn) {
    console.log("开始下载图片")
    let promise = Promise.resolve();
    let arr = [];
    imgPathArr.forEach((url, index) => {
      promise = promise.then(() => {
        return new Promise((resolve, reject) => {
          wx.downloadFile({
            url: url,
            success: function (res) {
              arr.push({ path: res.tempFilePath })
              console.log("第"+(index+1)+"张图片下载完成")
              resolve(arr)
            }
          })
        })
      })
    })
    promise.then((arr2) => {
      console.log(arr2)//这里的arr2和arr的值一样
      fn && fn(arr);
    })
  },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值