JavaScript:Web工作者和类型化数组
我有一个web工作程序(以JavaScript:Web工作者和类型化数组,javascript,json,web-worker,typed-arrays,Javascript,Json,Web Worker,Typed Arrays,我有一个web工作程序(以new worker()开始),它执行一些处理,应该返回Float32Array 然而,在workerpostMessage()s处理完数据之后,它似乎经历了对JSON的序列化和理想化,当接收到消息时,我得到的是一个普通的javascriptArray(具有原始类型数组所具有的所有属性) 一个简单的解决方法是从javascript数组中重新创建类型化数组,但这是浪费时间和内存的 有更好的方法吗?有什么方法可以告诉JSON反序列化实例化Float32Array而不是jav
new worker()
开始),它执行一些处理,应该返回Float32Array
然而,在worker
postMessage()
s处理完数据之后,它似乎经历了对JSON的序列化和理想化,当接收到消息时,我得到的是一个普通的javascriptArray
(具有原始类型数组所具有的所有属性)
一个简单的解决方法是从javascript数组中重新创建类型化数组,但这是浪费时间和内存的
有更好的方法吗?有什么方法可以告诉JSON反序列化实例化
Float32Array
而不是javascript数组?或者以其他方式传输二进制数据?更新:目前这似乎是一个Chrome错误:
类型化数组保存在Firefox 4中。所有支持Worker(IE10除外)的浏览器都支持所谓的可转移对象,这意味着如果您有数组缓冲区(即使用类型化数组的.buffer属性)作为postMessage的第二个参数,您可以包含要将所有权转移回的数组缓冲区列表。这比复制要快得多 解决的问题: