在没有GUI冻结的情况下渲染plotly.js图形(Web Worker?)

DaT*_*ebe 13 javascript web-worker plotly

我正在制作一个仪表板,用户可以在其中构建自己的可视化(使用plotly.js).有时,这些可视化的复杂性导致渲染时间过长,导致浏览器UI冻结.

我已经在仪表板中为其他任务创建了Web工作者.也许有一种方法可以在web-worker中渲染plotly.js图并将它们返回给主线程?

我知道网络工作者没有DOM/Canvas能力.但也许有诀窍或你知道更好的方法来防止GUI冻结?也许用phantomjs将渲染外包给服务器(我从来没有使用它,所以它只是猜测它可以与pjs一起使用).

小智 3

您的问题的可能解决方案可能是 OffscreenCanvas API: https: //developer.mozilla.org/de/docs/Web/API/OffscreenCanvas

您可以从工作人员访问此 API,也可以直接将其与您提到的库一起使用。

但由于浏览器支持非常糟糕(至少在 Firefox 中,我不知道目前其他浏览器的情况如何,https://bugzilla.mozilla.org/show_bug.cgi ?id=801176)2d 画布上下文不是支持(但如果您使用使用 WebGL 的库,那就不是问题)。

作为替代方案,您可以使用在 WebWorkers 中工作的纯 JavaScript 填充(它是重新实现)的画布:https: //www.npmjs.com/package/canvas-webworker 值得一提的是,这种方式没有硬件加速适用。

结合起来,可以创建一个好的解决方案。