来自ArrayBuffer的缓冲区,带有内存副本

时间:2018-11-09 15:05:44

标签: node.js buffer arraybuffer

我正在从Node.js 8.X切换到Node.js 10.x,并且在“新缓冲区”上收到了一些过时的警告

我有一个arrayBuffer,需要将其复制到Buffer中,而我的第一个版本是这样的:

const newBuffer = Buffer.from(myArrayBuffer)

但是在这种情况下(https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length)不会复制arrayBuffer,所以当我在异步代码中引用缓冲区时,在某些情况下我的数据已损坏

所以我切换到了:

const newBuffer = new Buffer(Buffer.from(myArrayBuffer))

它可以工作,但是我收到Node.js 10.X的警告

我做到了,但是不确定这是实现这一目标的最佳方法

const newBuffer = Buffer.alloc(myArrayBuffer.byteLength)
const abView = Buffer.from(myArrayBuffer)
abView.copy(newBuffer)

1 个答案:

答案 0 :(得分:0)

为了安全起见,您可以使用普通的旧for循环逐字节进行复制:

var newBuffer = new Buffer.alloc(myArrayBuffer.byteLength)

for (var i = 0; i < myArrayBuffer.length; i++)
    newBuffer[i] = myArrayBuffer[i];

这样,您一定要处理一个新对象,而不仅仅是ArrayBuffer上的视图。