JavaScript:加载图像后继续执行

标签 javascript image event-handling preload

我正在循环加载 8 个图像,我想暂停每个图像的循环以等待其加载。所以不是:

image = new Image()
image.onload = function(){ /*do anything*/ }
image.src = "abc.svg"

我想要这样的东西:

image = new Image()
image.src = "abc.svg"
image.waitLoad()
//do anything

有没有办法使用 Javascript 做到这一点? 提前致谢。

最佳答案

你不能暂停。但是,您可以延迟下一个图像加载,直到加载上一个图像。例如:

var images = ['path1', 'path2', 'path3', 'path4'];

(function next(images) {
    if (images.length) {
        var img = new Image();
        img.onload = function() { next(images); };
        img.src = images.shift();   
    }
})(images.slice());

在这种情况下,它只会在获取上一张图像后加载下一张图像。如果图像 src 有可能被破坏,请确保你也处理了,例如img.onload = img.onerror = function() { 下一步(图片); };.

var images = [1, 2, 3, 4];

(function next(images) {
    if (images.length) {
    	var img = new Image();
        img.onload = function() { 
       	    document.body.appendChild(img);
            setTimeout(function() { next(images); }, 500);
        };
        img.src = images.shift();
    }
})(images.slice());
<base href="http://lorempixel.com/100/100/food/">

关于JavaScript:加载图像后继续执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32951547/

相关文章:

javascript - 如何将附加变量传递给 .addEventListener 中的监听器

c++ - 带 OpenCV 的灰度 C++(出现一些噪音)

javascript - 在 Javascript 中一键打开 3 个项目

javascript - jQuery 无法识别点击模式关闭链接(href ="#')

android - 如何通过在android中选择它们来从sd卡上传图像

javascript - AngularJS 如何从指令模板内部捕获事件?

javascript - 事件委托(delegate)在 JavaScript 内部如何工作

c# - MVC - WCF - RabbitMQ - 通过消息队列到消费者的域事件加速或替代方案?

javascript - 如何使用嵌套协程和 Promise 来简化 JS 代码?

php - 如何检查上传的文件是否是受支持的文件