手写Promise加载一张图片

124 阅读1分钟
function loadImg(src){
    const p = new Promise((resolve, reject)=>{
        const img = document.createElement('img')
        img.onload = ()=>{
            resolve(img)
        }
        img.onerror = ()=>{
            const err = new Error(`图片加载失败${src}`)
            reject(err)
        }
        img.src = src
    })
    return p
   }

   let url1='https://img1.baidu.com/it/u=2186720242,2793587472&fm=253&fmt=auto&app=120&f=JPEG?w=1422&h=800',
   url2='https://img0.baidu.com/it/u=937072262,2445742246&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800'
   //执行
   loadImg(url1).then(img=>{
    console.log('1111',img.width)
    return img //第一种形式普通对象
   }).then(img=>{
    console.log('1111aa',img.height)
    return loadImg(url2)  // 第二种形式promise实例
   }).then(img2=>{
    console.log('222',img2.width)
   }).catch(ex=>console.error(ex))