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

时间:2014-05-14 14:27:35

标签: javascript html5 web-worker

据我所知,你只能传递一个字符串或一个可以作为JSON seralize的对象。

如果我使用WebWorker在后台下载它们,那么在worker和主页之间传递一些图像文件的最佳方法是什么?

1 个答案:

答案 0 :(得分:5)

  

你只能传递一个字符串或一个可以作为JSON封装的对象。

你的前提是错的。您可以传递structured clone algorithm支持的每种对象,例如,这可以是无法表示为JSON的循环链接数据。您还可以传递ArrayBuffers,ArrayBufferViews,PixelDataArrays,Blobs等所有JSON未知的数据类型。

Workers的postMessage method的第二个参数甚至允许你二进制数据(例如ArrayBuffers)直接传递给worker - 它甚至不会复制任何东西,尽管它将中性你所拥有的参考资料。