4

new Worker()いくつかの処理を行い、を返すことになっているWebワーカー(で始まる)がありFloat32Arrayます。
ただし、ワーカーpostMessage()がデータを取得した後、JSONへのシリアル化とdesirializationを経て、メッセージを受信したときに最終的にはプレーンなJavaScript Array(元の型指定された配列が持っていたすべてのプロパティを含む)になります。

簡単な回避策は、JavaScript配列から型付き配列を再作成することですが、これは無駄であり、時間とメモリを消費します。

これを行うためのより良い方法はありますか?JSONの逆シリアル化にFloat32Arrayjavascript配列の代わりにインスタンス化するように指示する何らかの方法はありますか?または、バイナリデータを転送する方法はありますか?

4

2 に答える 2

2

ワーカーをサポートするすべてのブラウザー (IE10 を除く) は、転送可能オブジェクトと呼ばれるものをサポートします。これは、配列バッファーがある場合 (つまり、型付き配列の .buffer プロパティを取得する場合)、postMessage の 2 番目のパラメーターとして配列バッファーのリストを含めることができることを意味します。の所有権を譲渡したい。これは、コピーするよりもはるかに高速です。

于 2013-06-14T16:39:06.680 に答える
1

更新: これは現時点では Chrome のバグのようです:

http://code.google.com/p/chromium/issues/detail?id=73313

型付き配列は Firefox 4 で保持されます。

于 2011-04-12T18:51:59.043 に答える