首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript: TextDecoder on SharedArrayBuffer

JavaScript: TextDecoder on SharedArrayBuffer
EN

Stack Overflow用户
提问于 2022-07-12 06:54:10
回答 2查看 170关注 0票数 2

我面临着在SharedArrayBuffer上使用decode()的问题。

代码:

代码语言:javascript
复制
  var sharedArrayBuffer = new SharedArrayBuffer(2);
  var uint8Array = new Uint8Array(sharedArrayBuffer);
  uint8Array[0] = 20;
  var decoder = new TextDecoder();
  decoder.decode(uint8Array);

错误:

代码语言:javascript
复制
Failed to execute 'decode' on 'TextDecoder': The provided ArrayBufferView value must not be shared.

有一个规范这里警告开发人员这种类型的内存的种族条件。我能强制解码吗?我相信在解码过程中数据不会被更改。还是有办法解决这个问题?

原因:,我想创建一个Uint8Array的副本,并且不通过postmessage (如果没有指定可传输的话,它默认复制)传递给多个IFrames(>3)IFrames(带有沙箱标记)。也许还有其他可能的解决方案?

EN

回答 2

Stack Overflow用户

发布于 2022-07-12 07:00:10

看来使用ArrayBuffer很好。

代码语言:javascript
复制
  var arrayBuffer = new ArrayBuffer(2);
  var uint8Array = new Uint8Array(arrayBuffer);
  uint8Array[0] = 20;
  var decoder = new TextDecoder();
  decoder.decode(uint8Array);
票数 0
EN

Stack Overflow用户

发布于 2022-07-12 13:44:33

Js

代码语言:javascript
复制
var sharedArrayBuffer = new SharedArrayBuffer(32);
var ary = new Int32Array(sharedArrayBuffer);
ary[0] = 20;
var encoder = new TextEncoder();
var EncodedArray = encoder.encode(ary);
console.log("Encoded Array : ", EncodedArray)
var decoder = new TextDecoder();
var DecodedArray = decoder.decode(EncodedArray);
console.log("Decoded Array is : ", DecodedArray)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72948162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档