<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>手写promise加载图片</title>
</head>
<body>
<div id="box"></div>
<script>
function loadImg(url){
return new Promise( (resolve, reject) => {
const imgEl = document.createElement('img');
const boxEl = document.getElementById('box');
boxEl.appendChild(imgEl);
imgEl.onload = () => {
resolve(imgEl);
}
imgEl.onerror = () => {
const err = new Error('图片加载失败' + url);
reject(err);
}
imgEl.src = url;
}
)
}
var url1 = 'https://userblink.csdnimg.cn/20210623/m0_47901007/pic/5299b0b9a9611f18eed78f0147a04b87-0.jpg?x-oss-process=image/interlace,1/format,jpg/resize,w_375';
var url2 = 'https://userblink.csdnimg.cn/20210623/m0_47901007/pic/0eae87fd6b88cd05ce88ac3a6a90ed8e-4.jpg?x-oss-process=image/interlace,1/format,jpg/resize,w_375';
var url3 = 'https://userblink.csdnimg.cn/20210623/m0_47901007/pic/a95b4b4b4c85d3f31407aedf2325ff8a-6.jpg?x-oss-process=image/interlace,1/format,jpg/resize,w_375';
loadImg(url1).then(img1 => {
console.log(img1.width);
return loadImg(url2);
}).then(img2 => {
console.log(img2.width);
return loadImg(url3);
}).then(img3 => {
console.log(img3.width);
}).catch( err => {
console.log(err);
})
</script>
</body>
</html>