我正在从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)
答案 0 :(得分:0)
为了安全起见,您可以使用普通的旧for
循环逐字节进行复制:
var newBuffer = new Buffer.alloc(myArrayBuffer.byteLength)
for (var i = 0; i < myArrayBuffer.length; i++)
newBuffer[i] = myArrayBuffer[i];
这样,您一定要处理一个新对象,而不仅仅是ArrayBuffer上的视图。