如题: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 的顺序一致。 有没有什么办法实现?
闭包或者递归
有道理。谢了[握手]
太过分了!本来打算装个B,等你来问了,就把两种方式各自怎么写说一下,展示一下编码能力的。结果你直接来句有道理。
哈哈哈哈~ 你提供的方式非常牛逼,没有大佬你的方式,我就打不开思路呀。谢谢大佬~ 授人以鱼不如授人以渔嘛。
哎呀大佬大佬,这两种方式怎么实现哦 :)
噗嗤。。终于来了个问详情的~
闭包:
在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()
}
})
}
}
用Promise风格好像也可以
wx.getImageInfo(src).then(res => console.log('res: ', res))