// 缓存图片方法
loadImgs(arr: Array<any>) {
return new Promise((resolve) => {
let count = 0;
let errImg = [];
let flag = true;
// 循环图片数组,每张图片都生成一个新的图片对象
const len = arr.length;
for (let i = 0; i < len; i++) {
// 创建图片对象
const image = new Image();
// 成功的异步回调
image.onload = () => {
count++;
arr.splice(i, 1, {
img: image,
width: image.width,
height: image.height,
});
// 这里说明 整个图片数组arr里面的图片全都加载好了
if (count === len) {
resolve();
}
};
image.onerror = (err) => {
this.errImg.push(arr[i]);
};
image.src = arr[i];
}
if(errImg.length && flag){
flag = false
this.loadImgs(errImg)
}
});
}