如何在javascript中将可传输对象从Web工作者发送到父级?



在JS中,我做了一个Web工作者,并希望将可转移的对象发送回父级。

在网络工作者中,我有

var NUMS = new ArrayBuffer(3);
NUMS[0] = 10;
NUMS[1] = 11;
NUMS[2] = 12;
postMessage(NUMS, [NUMS]);

然后在主线程中,我有

worker.onmessage = function(e) {
var first = e.data[0]; // undefined but the bytelength is 3
}

但是发生的情况是数组缓冲区的所有值似乎都被清除或无效。有谁知道如何解决这个问题?

原来你需要使用其中一个类型化数组

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays

var NUMS = new Int16Array(3);
NUMS[0] = 10;
NUMS[1] = 11;
NUMS[2] = 12;
postMessage(NUMS.buffer, [NUMS.buffer]);

然后你可以得到它

worker.onmessage = function(e) {
var a = new Int16Array(e.data);
var first = a[0]; 
}

最新更新