Javascript 将数据从webworker发送到站点上下文失败

Javascript 将数据从webworker发送到站点上下文失败,javascript,typescript,web-worker,Javascript,Typescript,Web Worker,我试图将数据从webworker传递到主上下文,但无法使其正常工作。我的代码是: alg.OnProcessEnd = (arg: { array: Uint32Array, max: number }) => { (<any>self).postMessage(arg, [arg.array]); }; alg.OnProcessEnd=(arg:{array:uint32数组,max:number})=>{ (self.postMessage(arg,[arg.a

我试图将数据从webworker传递到主上下文,但无法使其正常工作。我的代码是:

alg.OnProcessEnd = (arg: { array: Uint32Array, max: number }) => {
    (<any>self).postMessage(arg, [arg.array]);
};
alg.OnProcessEnd=(arg:{array:uint32数组,max:number})=>{
(self.postMessage(arg,[arg.array]);
};
但chrome声称“TypeError:未能在'WorkerGlobalScope'上执行'postMessage':索引0处的值没有可转移类型。”


所以我的问题是:如何从我无法复制的webworker(图像数据数组)正确发送数据

首先需要序列化
uint32数组
,将其传输,然后反序列化

一种方法是通过执行以下操作将其转换为JSON数组:

var jsonArray = '[' + Array.prototype.join.apply(arg.array, [',']) + ']';
var uint32Array = new Uint32Array( JSON.parse(jsonArray) );
然后,您可以通过执行以下操作将其传输并重新创建
uint32阵列
对象:

var jsonArray = '[' + Array.prototype.join.apply(arg.array, [',']) + ']';
var uint32Array = new Uint32Array( JSON.parse(jsonArray) );
编辑:

作为可转移对象:您缺少
缓冲区
属性

(<any>self).postMessage(arg, [arg.array.buffer]);
(self.postMessage(arg[arg.array.buffer]);

第二个参数应该是缓冲区,而不是数组本身

alg.OnProcessEnd = (arg: { array: Uint32Array, max: number }) => {
    (<any>self).postMessage(arg, [arg.array.buffer]);
};
alg.OnProcessEnd=(arg:{array:uint32数组,max:number})=>{
(self.postMessage(arg,[arg.array.buffer]);
};

不应该通过可转移对象来实现吗?