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

时间:2019-03-20 16:16:53

标签: d3.js internet-explorer-10 web-worker jsdom rickshaw

目标是在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 已完成...

  

关于概念的小证明,显示了如何在导航图中生成d3 SVG图表   网络工作者,并将其传递回要插入的主UI线程   一个网页。

     

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

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

问题:

该脚本几乎有5 MB,这对于应用程序来说是过多的内存需求。

所以我的问题

有人有解决问题的经验吗,或者对如何解决问题和满足要求有任何想法?

1 个答案:

答案 0 :(得分:0)

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