node.js - 来自 ArrayBuffer 的缓冲区和内存副本
问题描述
我正在从 Node.js 8.X 切换到 Node.js 10.x,并且在“新缓冲区”上收到了一些已弃用的警告
我有一个 arrayBuffer 需要复制到一个 Buffer 中,我的第一个版本是这样的:
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)
解决方案
for
为了安全起见,您可以使用普通的旧循环进行逐字节复制:
var newBuffer = new Buffer.alloc(myArrayBuffer.byteLength)
for (var i = 0; i < myArrayBuffer.length; i++)
newBuffer[i] = myArrayBuffer[i];
这样,您肯定会处理一个新对象,而不仅仅是 ArrayBuffer 上的一个视图。
推荐阅读
- android - 即使数据不为空,onResponse 中的 Retrofit2 NULL 响应也是如此
- c# - 不了解异步等待概念
- c# - ASP MVC 的 NLog 未写入数据库
- javascript - 在后台从 URL 下载三张第一张图片
- java - 在这种情况下对 java Java 算术运算如何工作感到困惑
- spring-boot - 如何使用 spring kafka 向断开连接的客户发送消息?
- c# - 在 C# 和 SQL 中更新记录并返回更新记录的 ID
- swift - 在集合视图单元格中查看 PHAsset
- elisp - 在 elisp 代码中定义一个矩形
- matlab - 我试图找出“下标索引必须是真正的正整数或逻辑”错误