JavaScript:Web Worker 和类型化数组

标签 javascript json web-worker typed-arrays

我有一个 web worker(从 new Worker() 开始)做一些处理并且应该返回一个 Float32Array
然而,似乎在工作人员 postMessage() 数据之后,它经过序列化和反序列化到 JSON,而我在收到消息时最终得到的是一个普通的 javascript Array(具有原始类型化数组的所有属性)

一个简单的解决方法是从 javascript 数组重新创建类型化数组,但这很浪费,而且会占用时间和内存。

有更好的方法吗?某种方式告诉 JSON 反序列化实例化 Float32Array 而不是 javascript 数组?或者以其他方式传输二进制数据的方法?

最佳答案

所有支持 worker 的浏览器(IE10 除外)都支持所谓的可传输对象,这意味着如果您有一个数组缓冲区(即获取类型化数组的 .buffer 属性),您可以将列表作为 postMessage 的第二个参数要转移所有权的数组缓冲区。这比复制它要快得多。

关于JavaScript:Web Worker 和类型化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5638453/

相关文章:

javascript - vue.js : Property or method "" is not defined, 渲染错误: "TypeError: Cannot read property ' ' of undefined"

javascript - typescript - Jasmine 中无效参数的测试用例

javascript - 如何从主框架测试 Fetch API 是否在 Web Worker 中可用

javascript - 如何在发送 ExtJS 之前更改 JSON 对象

javascript - 未捕获的网络错误 : Failed to execute 'importScripts' on 'WorkerGlobalScope'

javascript - 当事件待处理时附加新监听器时会发生什么?

javascript - 等效于 ES6 Promises 的 BlueBird Promise.props?

javascript - 使用 Mocha 在 Nightwatch 中循环测试

sql - 插入参数值和 JSON 字符串值

javascript - 将 Json 放入 HTML 表格