微信小程序canvasToTempFilePath: fail canvas is empty問題記錄

今天突然收到反饋說小程序端的二維碼不顯示了,排查發(fā)現(xiàn)報(bào)了下面的錯(cuò)誤


image.png

搜索了一番,又對(duì)比了自己的代碼,發(fā)現(xiàn)很多提到的解決方法都是說要在canvasToTempFilePath的第二個(gè)參數(shù)傳入this(自定義組件實(shí)例),但我的代碼已經(jīng)是傳有了的,另外還有說是要在 canvas 的 渲染函數(shù) draw 中的回調(diào)函數(shù),我也是這么做了,但為什么還是報(bào)這個(gè)錯(cuò)呢,而且這個(gè)問題并不是所有手機(jī)都存在這個(gè)問題,查找了半天,最后通過下面方式算是解決了:

setTimeout(() => {
  ctx.draw(false, setTimeout(() => {
    uni.canvasToTempFilePath({
      canvasId: this.cid,
      success: res => {
        options.success && options.success(res.tempFilePath)
      },
    fail: error => {
      options.fail && options.fail(error)
    }
    }, this)
  },300))
}, 200)

就是在draw外面和draw回調(diào)函數(shù)中增加setTimeout延遲時(shí)間,初步猜測(cè)是由于渲染完成了,但是canvas實(shí)例還沒有導(dǎo)致的問題,不知道對(duì)不對(duì),有理解的可以評(píng)論回復(fù)下。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容