在WebWorker和主线程之间传递二进制数据的最佳实践是什么?

What is best practice to pass binary data between WebWorker and main thread?

本文关键字:最佳 数据 是什么 二进制 WebWorker 线程 之间      更新时间:2023-09-26

据我所知,您只能传递可以序列化为JSON的字符串或对象。

那么,如果我在后台使用WebWorker下载图像文件,那么在工作人员和主页之间传递图像文件的最佳方法是什么?

你只能传递一个字符串或一个可以序列化为JSON的对象。

你的前提是错误的。您可以传递结构化克隆算法支持的每种类型的对象,例如,这可以是不能表示为JSON的循环链接数据。你也可以传递ArrayBuffers, ArrayBufferViews, PixelDataArrays, Blobs等,所有JSON不知道的数据类型。

工作器的postMessage方法的第二个参数甚至允许你二进制数据(比如ArrayBuffers)直接传输到工作器——它甚至不会复制任何东西,尽管它会中性化你所拥有的引用。