canvas 生成图片过程中, Promise.all() 无法正常调用
发布于 7 年前 作者 izou 5854 次浏览 来自 问答

需求:  生成分享图片

业务逻辑:   点击分享按钮, 将生成一张分享图片, 

技术实现:   通过 canvas 把页面绘制出来,wx.cancasToTempFilePath 将图片导出得到生成图路径,wx.getImageInfo 根据路径下载图,wx.previewImage 预览图片。


遇到问题:

 在 canvas 绘制图片前,需要把图片下载下来(getImageInfo ),多张图片就用到了 Promise.all()  (见下图)。

小程序开发工具实现没有问题,真机测试就出现问题,一直在生成中,排查代码后发现 promise.all().then() 就进不去 then()方法。 

 

同时发现一个有趣的规律:

    如果真机测试打开 vconsole 调试,就没得问题。

    真机扫开发工具=》远程调试  生成的二维码也没有问题

    只有真机扫描 开发工具 》 预览 生成的二维码就有问题!

    很是奇怪 !不解其中的奥妙!


有木有人遇到这样的问题? 欢迎一起讨论 或给予指点

小程序有没有技术支持呢? 在哪里可以找到?


6 回复

我们也遇到了跟描述一模一样的问题,想问一下,你们最后解决了么?

你好,初步判断是不同 js 引擎的 promise 实现差异导致。请问你出现问题的真机机型是什么呢?

@LastLeaf  安卓基本上 全军覆没,最后改变了实现的机制。

iphone X 12.3.1 遇到同样问题

很神奇,我也是使用Promise.all批量下载图片,但是至今未有then无法进入的情况,是否接口域名未配置好,或者图片不是https的?我使用的不是getimageinfo,而是downloadfile。后面是怎么解决的呢?希望了解一下方便踩坑

对了,我们遇到的情况是:只有当用户第一次进入小程序会出现这样的问题。当用户把小程序删除后,再次进入就好了,以后就一直是正常的了。

回到顶部