javascript - 在不卡住 GUI 的情况下呈现 plotly.js 图形(Web Worker?)

标签 javascript web-worker plotly

我正在开发一个仪表板,用户可以在其中构建自己的可视化效果(使用 plotly.js)。 有时,这些可视化的复杂性会导致渲染时间过长,从而导致浏览器 UI 卡住。

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

我知道 web-workers 没有 DOM/Canvas 能力。但是也许有技巧或者您知道防止 GUI 卡住的更好方法?也许使用 phantomjs 将渲染外包给服务器(我从未使用过它,所以只是猜测它可以与 pjs 一起工作)。

最佳答案

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

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

但由于浏览器支持真的很差(至少在 Firefox 中,我不知道其他浏览器目前如何,https://bugzilla.mozilla.org/show_bug.cgi?id=801176)不支持 2d Canvas 上下文(但如果你使用使用 WebGL 的库那不是问题)。

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

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

关于javascript - 在不卡住 GUI 的情况下呈现 plotly.js 图形(Web Worker?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39055162/

相关文章:

javascript - 在 Web Worker 中发起 HTTP 请求

r - Plotly 图表在 Shiny Dashboard 中无法正确呈现

javascript - Plotly js和平行坐标图

javascript - 通过下拉选择过滤表数据 React

javascript - PHP RSS 提要爬虫

javascript - D3.js 在两条路径之间添加截取点和区域

javascript - 如何忽略子元素的innerText

node.js - AWS Lambda 因 NodeJS 依赖项而失败

javascript - 网络 worker 在代码完成后会自行关闭吗?

r - 如何使用 ggplot 或plotly 创建每个条形包含多个 x 变量的条形图?