在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
}
但是发生的情况是数组缓冲区的所有值似乎都已清除或无效。有人知道如何解决此问题吗?
结果您需要使用一种类型的数组
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];
}