使用each和image.onload保持数组的顺序
retain order of array using each and image.onload
我尝试使用image。加载和有一些异步问题。图像数组将得到不一致的数组顺序。我检查了我的数据库,它不会导致错误,然后我意识到这个异步问题与image.onload。有人有处理这种情况的经验吗?
$(data).each(function(i, val) {
var albumPhoto = '';
albumPhoto = 'https://example.com/' + this.photo;
var temp_img = new Image(),
temp_img.src = albumPhoto;
temp_img.onload = function() {
images.push(albumPhoto);
}
})
不要使用push
来填充您的images
数组,而是使用jQuery提供的索引(i
)。
。: change images.push(albumPhoto)
to images[i] = albumPhoto
这是有效的,因为在实例化一个空数组(images = []
)之后,您可以将任何索引设置为一个值。其他索引保持不设置。
下面是一个示例,显示了它看起来像什么(在香草js中,使用超时而不是图像加载)
var target = [],
source = [1,2,3,4,5];
source.forEach(function(nr, index) {
setTimeout(function() {
target[index] = nr * 5;
console.log(JSON.stringify(target));
}, Math.random() * 500);
});
将所有图像放入数组中,然后在出现错误时将其删除。
$(data).each(function(i, val) {
var albumPhoto = 'https://example.com/' + val.photo;
var temp_img = new Image();
temp_img.src = albumPhoto;
images.push(albumPhoto);
temp_img.onerror = function() {
var src = this.src;
var index = images.indexOf(src);
images.splice(index, 1);
}
});
相关文章:
- Javascript-根据赋值顺序,按键合并对象数组
- 是否“;对于的“;循环迭代遵循JavaScript中的数组顺序
- Mongodb$in以与数组中相同的顺序获取结果
- 从数组中删除重复条目,并在javascript中按顺序排列
- Javascript按数字顺序排序()数组
- Javascript从数组中随机选择并按字母顺序排列
- 按 [field] 值对 javascript 数组进行排序会给出错误的顺序
- Javascript将生日按数组顺序排列
- Javascript - 如何按顺序从数组中挑选随机元素
- 如何按一个仍保持字母顺序的特性值(另一个特性值)对关联数组进行排序
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- Algo查找深度并在JSON数组中按顺序插入
- 如何使用下划线根据自定义排序顺序对对象数组进行排序
- 按数组顺序排列对象
- 在 sort() 之后,十进制数的 JavaScript 数组顺序不正确
- 偏移数组顺序在Javascript中用于Backstretch插件
- Javascript数组顺序值从大到小
- 数组顺序更改
- 如何改变值数组顺序在javascript?[& # 39;一个# 39;& # 39;b # 39;], [& # 39