微信小程式canvas繪圖網路圖片下載與promise all的應用
阿新 • • 發佈:2018-12-21
問題:如果海報需要儲存到手機的時候我們需要canvas繪圖實現,然而許多網路圖片需要本地下載之後才可以儲存到手機,官方提供的downloadFile方法雖然可以在成功的回撥中依次下載多張圖片,但是當圖片太多時候難免會造成回撥地獄,造成程式碼可讀性不強,程式碼臃腫的問題,這時候就需要用的promise all的方法來優化,上程式碼:
let bgimg = new Promise((resolve,reject)=>{ wx.downloadFile({ url: 'xxxx', // 下載資源的 url success: res => { resolve(res.tempFilePath) //背景圖 }, }); }) let headerImg = new Promise((resolve,reject)=>{ wx.downloadFile({ url: xxx, success: res=>{ resolve(res.tempFilePath) //頭像 }, }); }) Promise.all([bgimg,headerImg]).then(result => { context.drawImage(result[0], 0,0, me.data.WIDTH * 0.92, me.data.height * 0.87) //背景圖片 context.drawImage(result[1], me.data.height * 0.22,me.data.WIDTH * 0.41,me.data.WIDTH * 0.16, me.data.height * 0.1) //使用者頭像 }
通過promise all的方法返回頭像和背景圖的例項(也就是臨時路徑),通過result方法取值繪圖
分享也是學習的一種方式