Буфер от ArrayBuffer с копией памяти - PullRequest
0 голосов
/ 09 ноября 2018

Я переключаюсь с 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)

1 Ответ

0 голосов
/ 14 ноября 2018

Чтобы быть в безопасности, вы можете сделать побайтное копирование, используя простой старый цикл for:

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

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

Таким образом, вы наверняка имеете дело с новым объектом, а не просто с видом на ArrayBuffer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...