2016-11-11 53 views
-2

我有一个关于对象的数组,使用Three.js创建的网格,我想在web worker中执行一些操作。所以问题是我如何将它们发布给工作人员?使用javascript发布Three.js网格到web worker

从我所了解的有一些称为可转移对象的东西,它使用了一种叫做ArrayBuffer的东西,但我找不到任何有关如何将我的对象数组转换为的信息。或者这可能不可能?

+0

阅读MDN的文章话题,他们很清楚。你似乎不确定哪些是可移植的和ArrayBuffer。 MDN将清除你的不确定性。 –

回答

1

除非您的对象已经是二进制缓冲区格式,否则将其转换为该格式并返回时没有性能优势。出于某种原因,这是大多数Web Socket用户无法掌握的东西 - 像这样的问题一直被问到。我的回答总是一样的 - 如果你关心的是性能,请不要转换任何东西:

只需使用普通的好醇':

worker.postMessage( myArray的);

如果出于某种原因想我错了有关性能,随意在这个答案使用交互式片断事实检查我的要求:

+0

好的,谢谢!我会将我的网格转换为JSON结构,以重新生成工作中的网格对象。 – arpo

+0

@arpo不要转换它。让浏览器处理它,它会没事的。只需将你的数组直接放在'postMessage'中,然后在worker中,你就会收到它。 –

+0

这是我尝试的第一件事。它给了我这个错误:“未捕获的DOMException:未能在'Worker'上执行'postMessage':一个对象无法被克隆。” – arpo