在WebWorker中使用D3(v3)绘制图形

问题描述 投票:0回答:1

目标是在WebWorker中使用D3(v3)绘制图形(人力车会更好)。

要求#1:整个项目的存储空间不应超过1 MB。

要求2:应支持Internet Explorer 10


我已经尝试将DOM元素传递给Webworker。这带来了以下错误消息:

DOMException:无法在'Worker'上执行'postMessage':无法克隆HTMLDivElement对象。

  var worker = new Worker( 'worker.js' );
  worker.postMessage( {
    'chart' : document.querySelector('#chart').cloneNode(true)
  } );

GitHub用户chrisahardie已经......

一个关于概念的小证明,展示了如何在Web worker中生成d3 SVG图表并将其传递回主UI线程以注入到网页中。

https://github.com/chrisahardie/d3-svg-chart-in-web-worker

他使用Browserify将jsdom集成到浏览器中。

问题:

该脚本几乎有5 MB,这对应用程序的内存要求太多了。

所以我的问题:

有没有人有解决问题的经验,或者知道如何解决问题并满足要求?

d3.js internet-explorer-10 web-worker jsdom rickshaw
1个回答
0
投票

Web Workers无权访问以下JavaScript对象:窗口对象,文档对象和父对象。因此,我们在这方面所能做的就是构建可用于快速创建DOM的东西。工作人员可以例如处理数据集并执行所有繁重的计算,然后将结果作为一组数组传回。更多细节,你可以检查this articlethis sample

© www.soinside.com 2019 - 2024. All rights reserved.