追加/组合ArrayBuffer的首选方法是什么?
我正在接收和解析具有各种数据结构的网络数据包。传入的消息被读入ArrayBuffers。如果部分数据包到达,我需要将其存储并等待下一条消息,然后再尝试解析它。
目前我正在做这样的事情:
function appendBuffer( buffer1, buffer2 ) {
var tmp = new Uint8Array( buffer1.byteLength + buffer2.byteLength );
tmp.set( new Uint8Array( buffer1 ), 0 );
tmp.set( new Uint8Array( buffer2 ), buffer1.byteLength );
return tmp.buffer;
}
显然,由于ArrayBuffers具有固定的长度,因此您无法避免必须创建新的缓冲区,但是是否有必要初始化类型化数组?到达后,我只希望能够将缓冲区视为缓冲区;类型和结构无关紧要。
最佳答案
您可以始终使用DataView
(http://www.khronos.org/registry/typedarray/specs/latest/#8)而不是特定类型的数组,但是正如您的问题注释中所提到的那样,您实际上无法单独对ArrayBuffer
做很多事情。