go-echarts / snapshot-chromedp

⚔️ The extension for render image in go-echarts.
MIT License
12 stars 1 forks source link

keephtml的问题 #3

Closed XMingG99 closed 6 months ago

XMingG99 commented 6 months ago

不保存html,为什么要把创建了再用defer删除?直接不创建html文件不就好了,而且你这样做还会引发另一个问题,当html文件还在写的时候,你去删除html文件就会引发io冲突,连图片都画不出来。

Koooooo-7 commented 6 months ago

因为这个实现实际上是截图的功能,不是直接将字节流生成图片(此时echarts还没有进行渲染)。 首先要生成html,然后通过无头浏览器去query到对应的图表后再截图生成图片。

XMingG99 commented 6 months ago

ok,明白了,但是IO冲突的问题还是会存在,图画到一半,程序跑完了,就把文件删了,最后就会报错,可以加一个时间的传参,让程序里面sleep等待一段时间,把图画完,或者有其他好的方法也可以

Koooooo-7 commented 6 months ago

ok,明白了,但是IO冲突的问题还是会存在,图画到一半,程序跑完了,就把文件删了,最后就会报错,可以加一个时间的传参,让程序里面sleep等待一段时间,把图画完,或者有其他好的方法也可以

删除html和生成图片这两个操作是独立的,在load截图的base64到内存之后,html文件此时就可以删除了,defer的语义已经进行了延迟。IO冲突是指?

XMingG99 commented 6 months ago

删除html和生成图片这两个操作是独立的,在load截图的base64到内存之后,html文件此时就可以删除了,defer的语义已经进行了延迟。IO冲突是指?

抱歉,之前是我想错了,不过我说的IO冲突指的是,您创建了html并往里面写数据之后,没有用 f.close() 关闭,后面再去删除文件的时候就会显示文件已被其他程序占用。当然这个问题是我之前跑demo的时候遇到的一个问题,可能是偶然性的,不过您可以自己尝试一下。

Koooooo-7 commented 6 months ago

好的,应该是写入html之后没有关闭文件的问题,后面我看一下。