0

在 JS 中,我创建了一个 web worker,并希望将一个可传输的对象发送回父级。

在网络工作者中,我有

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
}

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

4

1 回答 1

0

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

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]; 
}
于 2019-12-05T06:29:35.173 回答