我正在使用Parallel.js和Q.js实现"多线程"进入我的申请。因为我只能将可序列化的对象传递给Parallel.js,我需要传递一个ArrayBuffer,我将ArrayBuffer转换为Uint8Array作为JSON对象,使用此JSON.stringify(new Uint8Array(bytes))
,然后在Parallel.js中将JSON对象转换为对象,然后尝试Uint8Array,然后尝试像这样的缓冲区
var object = JSON.parse(data[0]);
var bytes = new Uint8Array(Object.keys(object).map(function(k) { return object[k]}));
var buffer = bytes.buffer;
这通常应该有效,因为Uint8Array有一个名为buffer
的原型,但缓冲区总是未定义的。对象和字节是正确的,当我看一下字节的原型buffer
时,我可以看到这条消息:[Exception: TypeError: Method Uint8Array.buffer called on incompatible receiver #<Uint8Array>]
而且我真的不知道应该如何解决这个问题。
有人知道修复吗?
答案 0 :(得分:0)
虽然我不确定为什么这样做不起作用,但您可以将值转换为Base64,反之亦然,如here所述:
// encode
var str = base64EncArr(new Uint8Array(4)); // "AAAAAA=="
// decode
var arr = base64DecToArr("AAAAAA=="); // [0, 0, 0, 0]