你可以使用Promise来封装onload事件,以便在图片加载完成后执行异步操作。以下是一个将图片加载过程封装成Promise的示例:
function loadImage(url) {
return new Promise(function(resolve, reject) {
var img = new Image();
img.onload = function() {
resolve(img); // 图片加载完成,将img对象传递给resolve
};
img.onerror = function() {
reject(new Error('Image load failed')); // 图片加载失败,reject带上错误信息
};
img.src = url; // 设置图片的src,开始加载图片
});
}
// 使用示例
var imageUrl = 'example.jpg'; // 替换成你的图片URL
loadImage(imageUrl)
.then(function(img) {
// 图片加载成功,可以在这里对加载的图片执行操作
document.body.appendChild(img); // 例子中将图片添加到body中
})
.catch(function(error) {
// 图片加载失败,可以在这里处理错误
console.error(error);
});
在这个示例中,loadImage函数返回一个Promise对象。当图片加载完成时,Promise会调用resolve,传递加载完成的图片对象。如果加载失败,Promise会调用reject,传递一个Error对象。这样,你就可以使用.then()和.catch()来处理图片加载的成功和失败情况。 网友回复


