需求:有一個圖片列表,我想要在圖片onload成功之後獲取載入成功的圖片列表,圖片資源載入為非同步,我們使用ES7的async await方式實現,多張圖片,是用for迴圈。 註意:圖片載入失敗一定要加監聽,await只有在有返回之後才會繼續向下執行,無論成功與失敗,否則第一張圖載入失敗,下麵的awa ...
需求:有一個圖片列表,我想要在圖片onload成功之後獲取載入成功的圖片列表,圖片資源載入為非同步,我們使用ES7的async await方式實現,多張圖片,是用for迴圈。
註意:圖片載入失敗一定要加監聽,await只有在有返回之後才會繼續向下執行,無論成功與失敗,否則第一張圖載入失敗,下麵的await的都不會執行。
代碼實現:
let successImageList = []; let imageUrlList = ["https://aaa.jpg", "http://image.biaobaiju.com/uploads/20190508/17/1557306553-NZiDWHaGKu.jpg", "http://img5.imgtn.bdimg.com/it/u=3025209343,1849399022&fm=26&gp=0.jpg"] async function getSuccessImageList() { try{ let imgTotal = imageUrlList.length; for (let i = 0; i < imgTotal; i++) { //第i張圖片載入完成,push到新數組中 await addImageProcess(imageUrlList[i]).then((src) => { console.log(`第${i}張圖片src:${src}`) successImageList.push(src); }).catch((err)=>{ console.log(`第${i}張圖片:${err}`) }) } console.log(successImageList) function addImageProcess(src) { return new Promise((resolve, reject) => { let img = new Image() img.onload = () => resolve(src) img.onerror = ()=>reject("載入失敗") img.src = src; }) } }catch(err){ console.log(err) } } getSuccessImageList()
以上圖片鏈接從百度圖片獲取,侵刪。
參考鏈接:
https://zhuanlan.zhihu.com/p/68117645
https://stackoverflow.com/questions/46399223/async-await-in-image-loading