【问题标题】:Passing custom objects to webworker cause loosing prototype information将自定义对象传递给 webworker 导致丢失原型信息
【发布时间】:2013-05-21 16:18:27
【问题描述】:

我尝试将数据从 three.js 网格导出到 webworker 中的字符串。我在丢失原型信息时遇到了麻烦。 (这对于three.js 没有问题,但是对于web-workers。一般我会尝试将对象发送给webworker 并在导入的脚本中使用它)

这是我的网络工作者代码:

importScripts('../editor/three.js', '../exporter.js');

onmessage = function(event) {
  postMessage(event.data);
  export(event.data);
 };

在 event.data 中是具有面和顶点的对象。 PostMessage 发送正确的信息。比如——法线向量知道clone()函数。

问题是,当我尝试访问 export() 函数中的数据时。然后值是正确的,但我丢失了所有原型信息。所以法线向量有属性x,y,z,但是不知道clone()函数。

export() 函数在exporter.js 中声明,three.js 对象的定义在three.js 中。

有什么想法吗?

谢谢。

【问题讨论】:

  • 你在event.data 里放了什么?您确定event.data 真的是一个javascript 对象而不是JSON 编码对象(在这种情况下,该对象的所有功能都将丢失)?
  • 是的,我确定。我可以在 webworker 中调用对象的函数,但是当我尝试在导入的脚本中调用它时它不起作用

标签: javascript three.js web-worker


【解决方案1】:

愚蠢的问题 - “webworkers 规范不允许传递字符串以外的任何内容。”

【讨论】:

  • 哇老兄,这很难。我知道这是一个旧答案,但首先,你怎么能告诉任何人他的问题很愚蠢?其次,这是错误的,你可以传递简单的对象(它会被序列化和反序列化)
  • 我想他会没事的。主要是因为我是提出这个问题的人;)
猜你喜欢
  • 1970-01-01
  • 2015-08-14
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多