关于异步接口draw
发布于 5 年前 作者 mhan 6650 次浏览 来自 问答

使用场景

根据 canvas 进行裁剪 然后 使用draw 方法 回调函数 中 再调 canvasToTempFilePath api

生成 图片

模拟器 是正常的

是正常的

但是 在 真机中

代码 :

context.draw(false,function(){
   wx.canvasToTempFilePath({
        canvasId: 'canvas',
        success: function (res) {
          console.log(res)
          wx.getImageInfo({
            src: res.tempFilePath,
            success: function (res) {
              console.log(res)
            }
          })
          _this.page.setData({
            canvaResUrl: res.tempFilePath,
          })
        }
      }) 
})

问题是

真机生成的 图片 有的 时候正常 有的 时候不正常 模拟机 每次正常

最后 定位 到 draw 接口 是 异步的

在 回调 时 生成 图片 有问题 在 draw 回调 加了 一个 定时器

context.draw(false,function(){
setTimeout(function(){
        wx.canvasToTempFilePath({
          canvasId: 'canvas',
          success: function (res) {
            wx.getImageInfo({
              src: res.tempFilePath,
              success: function (res) {
                console.log(res)
              }
            })
            _this.page.setData({
              canvaResUrl: res.tempFilePath,
            })
          }
        })
      },1000)
})

疑问:

draw 中 回调 不是 在 绘制 完成 时 执行么

现在 加的 时间 是 1000ms 这个 时间 可能 和 设备 有关 这样 处理肯定 不好

还有 更好的 解决 办法么?

5 回复

我也遇到了同样的问题,wx.draw不是成功回调才执行wx.canvasToTempFilePath的吗?万一超过1秒还没有画完呢?

遇到同样问题,好郁闷啊,555555555

同样,这因该是图片还没画完,就调回调函数了。

我也遇见这个问题,很奇怪。

你好

wechatide://minicode/DDwrAmmQ7wDt

回到顶部