这里我有一个简单的测试代码,它在浏览器中加载图像测试。在我完成加载后,我使用异步onload事件将图像添加到dom。图像加载得很好。 问题是如果我不断重新加载页面多个时间图像序列变化。就像图像-2在图像-1之前加载,有时图像-3加载第一等,如何我可以确保图像加载顺序,如第一次加载image1,然后image2,image3等每次我加载页面。如何我可以做到这一点?如何确保图像顺序加载
var images = ['cat1.png','cat2.jpg','cat3.jpg'];
var i = 0;
images.forEach(function(elem,index,arr){
var image=new Image();
image.onload = function(){
document.body.appendChild(image);
console.log(++i);
};
image.onerror = function(){
console.log('error occured');
}
image.src = elem;
image.style.width = '300px';
image.style.height = '300px';
});
使用承诺https://developer.mozilla.org/nl/docs/Web/ JavaScript/Reference/Global_Objects/Promise – Roberrrt
但是,foreach是一个同步方法。它应该阻止所有内容,直到第一个图像加载,不是吗? –
@ AL-zami'onload'是一个异步事件,因此'forEach'的回调不会等待图片下载,它只会开始下载,然后继续。 – Frxstrem