简体   繁体   English

我想在javascript中预加载图像数组并暂停直到所有图像都加载完毕

[英]I want to preload an array of images in javascript and pause until they are all loaded

I have a code that depends on an array of large images being loaded first, so I'm trying to do something like this: 我有一个代码,该代码取决于首先加载的大型图像数组,因此我正在尝试执行以下操作:

var loading = 0;
    var i = 0;
    var imgs = [];
    var background = [
        'bg1-1', 'bg1-2', 'bg1-3', 'bg1-4',
        'bg2-1', 'bg2-2', 'bg2-3', 'bg2-4',
        'bg3-1', 'bg3-2', 'bg3-3', 'bg3-4',
        'bg4-1', 'bg4-2', 'bg4-3', 'bg4-4'
    ];

    for (i = 0; i < background.length; i++) {
        imgs[i] = document.getElementById(background[i]);
        imgs[i].onload = function() {
            loading++;
        }
    }

    while (loading < 16) {  }

    alert('images loaded!'); //I need to ensure images are fully loaded here.

So, it just hangs and never pulls out of the while loop. 因此,它只是挂起而从未退出while循环。

Put the condition and the alert in the callback. 将条件和警报放入回调中。

var loading = 0;

for (i = 0; i < background.length; i++) {
    imgs[i] = document.getElementById(background[i]);
    imgs[i].onload = function() {
        loading++;
        if (loading >= background.length)
            alert("all done");
    }
}

And really it would be better to reuse that function. 确实,最好重用该功能。

var loading = 0;

function imgHandler() {
    loading++;
    if (loading >= background.length)
        alert("all done");
}

for (i = 0; i < background.length; i++) {
    imgs[i] = document.getElementById(background[i]);
    imgs[i].onload = imgHandler;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM