const list = [
"./img.png",//本地存在可加载成功
"//be-fe.github.io/static/images/iSlider-card/10.jpg",//加载图片失败
"./load.gif",//本地存在可加载成功
"//be-fe.github.io/static/images/iSlider-card/12.jpg",//加载图片失败
null,//无图片
"//be-fe.github.io/static/images/iSlider-card/17.jpg",//加载图片失败
];
const placeholder = '默认占位图';
const loadError = '加载失败图';
const render = () => {
let endSrc = placeholder;
let imgList = [];
list.forEach((ele) => {
if(ele){
const image = new Image();
image.src = ele;
image.onload = () => {
endSrc = ele;
};
image.onerror = () => {
endSrc = loadError;
};
}
imgList.push(endSrc);
});
// 我期望取得html 、onload 和onerror后的值[load和error事件是异步的 所以目前获取不到]
return imgList;
}
console.log(render())
// 目前输出 ["默认占位图", "默认占位图", "默认占位图", "默认占位图", "默认占位图", "默认占位图"]
// 期望输出 ["./img.png", "加载失败图", "./load.gif", "加载失败图", "默认占位图", "加载失败图"]
之前问过类似的问题 但是不满足也无需求!!
先了解单线程和异步吧,不然给你答案也无用