我需要有效地向网络工作者发送数据。我已经设法弄清楚如何从数组创建缓冲区:
// assume it contains integers
var numbers = new Int8Array(10);
// works
const data = {buffer: numbers.buffer};
worker.postMessage(data, [data.buffer]);
但我们假设我有一个如下所示的对象:
var myObject = {'in': [0.123,-0,521], 'out' : [1.409]};
如何将其转换为缓冲区?我发现了许多类似的问题,但它们似乎使用了 Node ,我没有使用它。
答案 0 :(得分:1)
你可以像这样创建一个类型化的数组:
[obj1.in1,obj1.in2,obj1.out,obj2.in1,...]
有一个对象:
var arr=Int8Array.from(myObject.in.concat(myObject.out));
使用对象数组:
var ObjArr=[obj1,obj2];
var arr=new Int8Array(ObjArr.length*3);
for(var i=0;i<ObjArr.length;i++){
var obj=ObjArr[i];
arr.set(obj.in.concat(obj.out),i*3);
}
要迭代,你可以使用一个简单的for循环:
for(var i=0;i<arr.length-2;i+=3){
var in1=arr[i],in2=arr[i+1],out=arr[i+2];
...
}