1. 程式人生 > >微信小程式canvas繪圖網路圖片下載與promise all的應用

微信小程式canvas繪圖網路圖片下載與promise all的應用

問題:如果海報需要儲存到手機的時候我們需要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方法取值繪圖

分享也是學習的一種方式