Буфер от ArrayBuffer с копие на паметта

Преминавам от Node.js 8.X към Node.js 10.x и получавам някои остарели предупреждения за „нов буфер“

Имам arrayBuffer, който трябва да копирам в буфер и първата ми версия беше така:

const newBuffer = Buffer.from(myArrayBuffer)

Но arrayBuffer не се копира в този случай ( https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length ), така че данните ми бяха повредени в някои случаи, когато препращам към буфера в асинхронен код

така че преминах към:

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)

person Nico AD    schedule 09.11.2018    source източник


Отговори (1)


За по-сигурно можете да копирате байт по байт, като използвате обикновен стар for цикъл:

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

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

По този начин със сигурност ще имате работа с нов обект, а не само с изглед на ArrayBuffer.

person mihai    schedule 14.11.2018