收藏
回答

提问:getImageInfo有同步版本吗?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug getImageInfo 工具 6.7.1 2.2.1


如题:getImageInfo有同步版本吗?或者没有什么方法使 getImageInfo 同步执行?


如下代码:

var newImgs = [];

for (var i = 0; i < imgs.length; i++) { // imgs为网络图片路径数组

    wx.getImageInfo({

        src: imgs[i],

        success: function (res) {

            var localImg = res.path;

            newImgs.push(localImg);

        }

    })

}


要求: 获取后的newImgs图片顺序也与imgs 的顺序一致。 有没有什么办法实现?

回答关注问题邀请回答
收藏

2 个回答

  • 卢霄霄
    卢霄霄
    2018-08-30

    闭包或者递归

    2018-08-30
    有用 2
    回复 12
    • 文杰
      文杰
      2018-08-30

      有道理。谢了[握手]


      2018-08-30
      回复
    • 卢霄霄
      卢霄霄
      2018-08-30回复文杰

      太过分了!本来打算装个B,等你来问了,就把两种方式各自怎么写说一下,展示一下编码能力的。结果你直接来句有道理。

      2018-08-30
      回复
    • 文杰
      文杰
      2018-08-30回复卢霄霄

      哈哈哈哈~  你提供的方式非常牛逼,没有大佬你的方式,我就打不开思路呀。谢谢大佬~   授人以鱼不如授人以渔嘛。

      2018-08-30
      回复
    • 布鲁布鲁
      布鲁布鲁
      2018-11-06回复卢霄霄

      哎呀大佬大佬,这两种方式怎么实现哦 :)

      2018-11-06
      回复
    • 卢霄霄
      卢霄霄
      2018-11-06回复布鲁布鲁

      噗嗤。。终于来了个问详情的~

      闭包:

      在getImageInfo前面,定义个变量,然后后面就用这个变量就行了

      var newImgs = [];

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

          let index = i

          wx.getImageInfo({

              src: imgs[index],

              success: function (res) {

                  var localImg = res.path;

                  newImgs[index] = localImg;

              }

          })

      }


      递归

      onLoad:function(){

          this.index = 0

          this.newImgs = []

          this.getInfo()

      },

      getInfo: function(){

          if(this.index<imgs.length){ 

              wx.getImageInfo({

                  src: imgs[this.index],

                  success: (res)=> {

                      var localImg = res.path;

                      newImgs.push(localImg);

                      this.index++;

                      this.getInfo()

                  }

              })

          }

      }

      2018-11-06
      4
      回复
    查看更多(7)
  • void
    void
    01-21

    用Promise风格好像也可以

    wx.getImageInfo(src).then(res => console.log('res: ', res))
    
    01-21
    有用
    回复
登录 后发表内容