在工作人员之间共享嵌套对象数组

问题描述 投票:0回答:1

我有一个对象数组,其中包含更多对象作为值。我正在使用 Web Workers,并且需要在工作文件中使用这个精确的对象数组(或另一个对象)。问题是我找不到任何解决方案来将此数组或对象从主文件转发到工作程序。 我无法使用共享数组缓冲区,因为它需要类型化数组(或者我找不到任何解决方案)。并且字符串化不起作用,因为在解析保留数组后,保留我用来比较的对象无法识别对象。

javascript web-worker sharedarraybuffer
1个回答
2
投票

两个线程不能共享对象数组。正如您所提到的,线程可以共享

SharedArrayBuffer
数据,其中通过两个线程中的类型化数组访问相同的数据,但这是针对原始值,而不是针对对象。

可以在线程之间传输其中包含某些类型的对象的其他类型的数组(其中源线程失去对这些对象的访问权限,直到或除非目标线程将它们发送回)。您只能使用可转移对象来做到这一点,而普通对象是不可转移的。

您需要使用某种序列化将对象转换为字符串或可传输对象,然后处理它们的反序列化。

字符串化不起作用,因为在解析保留数组后,保留我用来比较的对象无法识别对象。

您需要为他们提供唯一的 ID,以便您将序列化版本与原始版本相关联。

© www.soinside.com 2019 - 2024. All rights reserved.