1

1.main_thread 和 work_thread 不共享任何东西(不共享任何东西)

2.在main_thread中将domFragment构造成某种级别的结构(基于数据)有点耗时,可以分为worker_thread的作业。

但是,我找不到将 DocumentFragment 传入 work_thread 的方法

postMessage(fragment) // no way

postMessage({f:fragment}) // no way ,same reason above(serialization)

postMessage(fragment,[fragment]) // no way, type checking , must be a buffer type...

也许这种优化不值得努力?任何意见?

4

1 回答 1

5

正如W3C 规范所说,不能从主线程与工作线程共享任何类型的 DOM API。

规范摘录:

DOM API(节点对象、文档对象等)不适用于工作人员[...]

由于 DocumentFragment 至少继承自 Node,因此(几乎)不可能将其发送给 webworker。我说得差不多了,因为可以将它作为字符串发送(例如通过 innerHTML),但这意味着您必须在工作线程内以某种方式解析它或从该字符串中收集信息。就个人而言,我认为没有任何聪明的方法可以做到这一点。

一个可能的解决方案可能是将原始数据作为 JSON 传递给您的工作线程,在那里构造一个字符串并将该字符串传回。

于 2013-07-04T01:11:56.470 回答