收藏
回答

关于for循环一级作用域是有序的但二级作用域是无序的

问题模块 框架类型 问题类型 操作系统 工具版本
开发者工具 小程序 Bug Windows 最新

wechatide://minicode/VYu6vXmR7K1Y 代码片段



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

4 个回答

  • boxin
    boxin
    2018-08-26

    wx.getImageInfo()函数是异步的,肯定会导致for循环错位,你要想有序可以使用settimeout实现

    var i=0;
    var timer=setTimeout(function(){
    console.log(i);
    var timerThat=this;//定时函数
    if(i<9){
    wx.getImageInfo({
    src:url,
    success:function(res){
    i++;
    console.log(i);
    //执行你要的代码块;
    timer=setTimeout(timerThat,50);//下一次循环
    }
    })
    }else{
    console.log(i);
    clearTimeout(timer);
    }
     
     
    },50)


    2018-08-26
    赞同
    回复 1
    • 三岁
      三岁
      2018-08-26

      就是用setTimeout代替for循环的意思吗

      2018-08-26
      赞同
      回复
  • 卢霄霄
    卢霄霄
    2018-08-27

    你是要保证加载的顺序和最初的列表顺序一致吗?

    let list = [image1,image2,image3]

    let position = 0

    let length = list.length

    let loop = function(){

        let image = list[position]

        wx.getImageInfo({

            success:(res)=>{

                //doSomething

                if (++position<length){

                    loop()

                }

            }

        })

    }

    2018-08-27
    赞同
    回复
  • Lee
    Lee
    2018-08-27

    老哥了解一下js的异步原理吧。

    用闭包解决这个问题。

    2018-08-27
    赞同
    回复