1. // 缓存图片方法
    2. loadImgs(arr: Array<any>) {
    3. return new Promise((resolve) => {
    4. let count = 0;
    5. let errImg = [];
    6. let flag = true;
    7. // 循环图片数组,每张图片都生成一个新的图片对象
    8. const len = arr.length;
    9. for (let i = 0; i < len; i++) {
    10. // 创建图片对象
    11. const image = new Image();
    12. // 成功的异步回调
    13. image.onload = () => {
    14. count++;
    15. arr.splice(i, 1, {
    16. img: image,
    17. width: image.width,
    18. height: image.height,
    19. });
    20. // 这里说明 整个图片数组arr里面的图片全都加载好了
    21. if (count === len) {
    22. resolve();
    23. }
    24. };
    25. image.onerror = (err) => {
    26. this.errImg.push(arr[i]);
    27. };
    28. image.src = arr[i];
    29. }
    30. if(errImg.length && flag){
    31. flag = false
    32. this.loadImgs(errImg)
    33. }
    34. });
    35. }