如何在javascript中将可转让对象从网络工作者发送给父母?

问题描述 投票:0回答:1

在JS中,我做了一个网络工作者,并希望将可转让的对象发送回父母。

在网络工作者中,我有

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
}

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

javascript web-worker transferable
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]; 
}
© www.soinside.com 2019 - 2024. All rights reserved.