2011-04-12 116 views
4

我有一個網絡工作者(開始於new Worker())做了一些處理,應該返回一個Float32Array
似乎是在工作人員postMessage()的數據後,它通過序列化和desirialization到JSON,當接收到消息時,我最終得到的是一個普通的javascript Array(具有原始類型數組的所有屬性)JavaScript:網絡工作者和鍵入數組

一個簡單的解決方法是從JavaScript數組中重新創建類型數組,但這很浪費,需要時間和內存。

有沒有更好的方法來做到這一點?某種方式告訴JSON反序列化來實例化一個Float32Array而不是一個javascript數組?或者以其他方式傳輸二進制數據的方式?

+0

問題解決:https://developer.mozilla.org/en/DOM/The_structured_clone_algorithm – bennedich 2012-01-18 03:05:06

回答

2

支持工人(除了IE10)所有的瀏覽器都支持什麼叫做這意味着如果你有一個數組緩衝區(也就是取得你的類型化數組的.buffer屬性),你可以作爲postMessage的第二個參數包含一個你想要傳遞所有權的數組緩衝區的列表。這比複製速度快得多。