关于for循环一级作用域是有序的但二级作用域是无序的
发布于 5 年前 作者 zenggang 3470 次浏览 来自 问答

wechatide://minicode/VYu6vXmR7K1Y 代码片段

3 回复

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

用闭包解决这个问题。

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

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()

            }

        }

    })

}

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)
回到顶部