我面临着在SharedArrayBuffer上使用decode()的问题。
代码:
var sharedArrayBuffer = new SharedArrayBuffer(2);
var uint8Array = new Uint8Array(sharedArrayBuffer);
uint8Array[0] = 20;
var decoder = new TextDecoder();
decoder.decode(uint8Array);错误:
Failed to execute 'decode' on 'TextDecoder': The provided ArrayBufferView value must not be shared.有一个规范这里警告开发人员这种类型的内存的种族条件。我能强制解码吗?我相信在解码过程中数据不会被更改。还是有办法解决这个问题?
原因:,我想创建一个Uint8Array的副本,并且不通过postmessage (如果没有指定可传输的话,它默认复制)传递给多个IFrames(>3)IFrames(带有沙箱标记)。也许还有其他可能的解决方案?
发布于 2022-07-12 07:00:10
看来使用ArrayBuffer很好。
var arrayBuffer = new ArrayBuffer(2);
var uint8Array = new Uint8Array(arrayBuffer);
uint8Array[0] = 20;
var decoder = new TextDecoder();
decoder.decode(uint8Array);发布于 2022-07-12 13:44:33
Js
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)https://stackoverflow.com/questions/72948162
复制相似问题