传输一个包含对象的数组
WebWorker - Transferring an array which contains objects
我有一个数组,我需要从WebWorker传输回主线程。据我所知,只有ArrayBuffers和typedarray是可转移的,其他任何东西都是复制的,而不是传输的。
我的问题是数组包含对象,所以我不确定如何传输它们(这是需要由于巨大的大小)。
例如,假设我有:
function something() {
this.x = 1;
this.y = 2;
this.z = 3;
}
var array = [];
for (var x = 0; x < 6; x++) {
array[x] = new something();
}
是否有一种方法可以将数组转换为ArrayBuffer,然后将其转换回来?
谢谢你的帮助!
考虑在创建对象时对数组(object?)的每个元素进行post。然后将其放入onmessage处理程序中的数组中。
function something() {
this.x = 1;
this.y = 2;
this.z = 3;
}
var array = [];
for (var x = 0; x < 6; x++) {
postMessage(new something());
}
这应该适用于简单对象,如示例中的对象,但您必须测试边界。
在主页和工作线程之间传递的数据是复制的,而不是共享的。对象在传递给工作线程时被序列化,并且随后,在另一端进行反序列化。page和worker完成不能共享同一个实例,所以最终的结果是一个副本在两端创建。大多数浏览器实现此特性为结构化的克隆。
MDN: Passing Data
相关文章:
- 如何遍历包含对象的数组-javascript
- 如何确定对象内部包含对象的JSON的长度
- 对包含对象的JSON对象进行排序
- 如何使用Typescript创建一个包含对象的字段的新对象
- JS函数返回一个包含对象的数组
- 如何对姓氏进行排序,格式化电话号码,并返回一个包含对象数组值的字符串
- 当在JSON中使用包含对象的对象与对象数组时,可接受的约定是什么
- 如何加载包含对象对象的 JSON 文件的每个部分
- 如何从动态包含对象的变量生成对象数组
- 根据另一个包含角度 js 中对象的数组过滤包含对象的数组
- 将对象转换为包含对象作为元素 0 的数组
- 如何使用包含对象键名的变量访问对象属性
- 从包含对象的数组中查找最小值的最佳方法
- 使函数返回一个包含对象的数组
- 当 JSDoc 是包含对象的数组时,文档变量如何
- 使用对象对数组进行切片,并获取包含对象副本的数组
- AngularJS从包含对象的数组中过滤掉
- 如何将包含对象而不是字符串的正文发布到 HTTP API?棱角2.
- 如何在不使用JQuery的情况下查看数组是否包含对象
- 试图循环遍历包含包含对象的数组的数组,以匹配数据